【发布时间】:2009-12-06 10:59:55
【问题描述】:
我刚刚学习 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”属性进行检查的示例,但我专门寻找一种方法来搜索现有的文件集合/列表,而不是实时检查每个文件的文件系统,因为我将通过网络这样做并不断返回到一个包含数千个文件的目录,这很慢。
提前致谢。
【问题讨论】:
标签: c# fileinfo directoryinfo