我刚刚学习 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”属性进行检查的示例,但我专门寻找一种方法来搜索现有的文件集合/列表,而不是对文件系统进行实时检查对于每个文件,因为我将通过网络这样做并且不断地回到一个多文件目录是慢慢慢。
提前致谢。