私はちょうどC#を学んでいて(約2日間それをいじっています)、学習目的で、ファイルを同期するために(通常はネットワークを介して)VB6で作成した古いアプリを再構築することにしました。
VB 6でコードを書いたとき、それはほぼ次のように機能しました。
- 作成する
Scripting.FileSystemObject
- ソースと宛先のディレクトリオブジェクトを作成します
- ソースと宛先のファイルリストオブジェクトを作成します
- ソースオブジェクトを反復処理し、それが宛先に存在するかどうかを確認します
- そうでない場合は、作成します
- もしそうなら、ソースバージョンが新しい/大きいかどうかを確認し、そうである場合は、他のバージョンを上書きします
これまでのところ、これは私が持っているものです:
private bool syncFiles(string sourcePath, string destPath) {
DirectoryInfo source = new DirectoryInfo(sourcePath);
DirectoryInfo dest = new DirectoryInfo(destPath);
if (!source.Exists) {
LogLine("Source Folder Not Found!");
return false;
}
if (!dest.Exists) {
LogLine("Destination Folder Not Found!");
return false;
}
FileInfo[] sourceFiles = source.GetFiles();
FileInfo[] destFiles = dest.GetFiles();
foreach (FileInfo file in sourceFiles) {
// check exists on file
}
if (optRecursive.Checked) {
foreach (DirectoryInfo subDir in source.GetDirectories()) {
// create-if-not-exists destination subdirectory
syncFiles(sourcePath + subDir.Name, destPath + subDir.Name);
}
}
return true;
}
FileInfoまたはDirectoryInfoオブジェクトを使用して「Exists」プロパティでチェックを行うことを推奨しているように見える例を読みましたが、ファイルシステムへのライブチェックではなく、既存のファイルのコレクション/リストを検索する方法を特に探していますファイルごとに、ネットワークを介してこれを実行し、常に数千ファイルのディレクトリに戻るのは遅いです。
前もって感謝します。