0

私は現在このコードを使用しています:

    if (!Directory.Exists(command2)) Directory.CreateDirectory(command2);

    if (Directory.Exists(vmdaydir)) Directory.Delete(vmdaydir,true);

    if (!Directory.Exists(vmdaydir)) Directory.CreateDirectory(vmdaydir);

    var dir = Path.GetDirectoryName(args[0]);

    sb.AppendLine("Backing Up VM: " + DateTime.Now.ToString(CultureInfo.InvariantCulture));
    Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(dir, vmdaydir);
    sb.AppendLine("VM Backed Up: " + DateTime.Now.ToString(CultureInfo.InvariantCulture));

ご覧のとおり、ディレクトリを削除してから、フォルダをコピーして戻しています。ディレクトリのサイズが約80GBであるため、これには時間がかかります。すべてのファイルをコピーする必要はなく、変更されたファイルだけをコピーする必要があることに気付きました。

あるフォルダから別のフォルダにファイルをコピーし、新しいファイルのみをコピーするにはどうすればよいですか?誰か提案がありますか?

====編集====

各ファイルのファイル比較を実行してから、それを新しいディレクトリにコピーして、各フォルダ/ファイルを反復処理できると思いますか?これを行うためのより簡単な方法はありますか?

4

2 に答える 2

1

FileInfoクラスを使用し、LastWriteTimeプロパティを使用して、ファイルの最終変更時刻を取得します。それをチェックしている時間と比較し、後であるファイルのみを取得します。

ディレクトリ内のファイルをループして、最終変更時刻(FileInfo.LastWriteTime)を確認します。新しいファイルはすべてコピーされます。

詳細については、 FileInfoクラスを参照してください。

于 2012-10-10T21:34:00.807 に答える
0

これを実行しようとするときは、ファイルがロックされる可能性があることに注意する必要があります。そうしないと、別のアプリケーションがファイルで終了せず、準備が整う前にコピーしようとする可能性があります。

したがって、次の手順に従ってください...

1)ファイルをロックしようとする

2)if(got lock)コピーファイル

3)それ以外の場合は少し待ちます

4)後藤1

:)

于 2012-10-10T21:38:49.700 に答える