USB ドライブにあるいくつかのファイル、ディレクトリ、およびサブディレクトリの正確なコピーを作成し、I:/
それらを入れたいC:/backup
(たとえば)
USB ドライブの構造は次のとおりです。
(これは一例です。私のドライブには、より多くのファイル、ディレクトリ、およびサブディレクトリがあります)
コース/データ構造/db.sql
ゲーム/pc/pc-game.exe
試験/exam01.doc
さて、これから始める方法はわかりませんが、私の最初のアイデアは、これをすべてfiles
行うことです:
string[] files = Directory.GetFiles("I:");
次のステップは、ループを作成しFile.Copy
て宛先パスを指定することです。
string destinationPath = @"C:/backup";
foreach (string file in files)
{
File.Copy(file, destinationPath + "\\" + Path.GetFileName(file), true);
}
この時点で、すべてがうまく機能しますが、フォルダー構造が複製されないため、私が望んでいたわけではありません。また、次のようないくつかのエラーが発生します...
- 最初のエラーは、私の PC 構成がすべてのフォルダーの隠しファイルを表示し、USB には
AUTORUN.INF
もう隠していない隠しファイルがあり、ループがそれをコピーしようとし、その過程でこの例外が生成されるために発生します。
パス「AUTORUN.INF」へのアクセスが拒否されました。
- 2 つ目は、一部のパスが長すぎる場合に発生し、次の例外が生成されます。
指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は 260 文字未満、ディレクトリ名は 248 文字未満である必要があります。
そのため、これを達成し、考えられるエラーの各ケースを検証する方法がわかりません。これを行う別の方法とその方法(おそらくいくつかのライブラリ)または次の構造を持つ実装されたメソッドのようなより単純なものがあるかどうかを知りたいです:
File.CopyDrive(driveLetter, destinationFolder)
(VB.NET の回答も受け付けます)。
前もって感謝します。