我正在创建一个备份应用程序,其中c#扫描目录.在我使用这样的东西之前,为了获取目录中的所有文件和子文件:
DirectoryInfo di = new DirectoryInfo("A:\\");
var directories= di.GetFiles("*", SearchOption.AllDirectories);
foreach (FileInfo d in directories)
{
//Add files to a list so that later they can be compared to see if each file
// needs to be copid or not
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,有时无法访问文件,我会收到几个错误.我得到的一个错误示例是:
结果我创建了一个递归方法,它将扫描当前目录中的所有文件.如果该目录中有目录,那么将再次调用该方法传递该目录.关于这个方法的好处是我可以将文件放在try catch块中,如果没有错误,可以选择将这些文件添加到List,如果我有错误,则将目录添加到另一个列表.
try
{
files = di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);
}
catch
{
//info of this folder was not able to get
lstFilesErrors.Add(sDir(di));
return;
}
Run Code Online (Sandbox Code Playgroud)
所以这个方法效果很好,唯一的问题是当我扫描一个大目录时需要很多次.我怎么能加快这个过程?我的实际方法是这样,以防你需要它.
private void startScan(DirectoryInfo di)
{
//lstFilesErrors is a list of MyFile objects
// I …Run Code Online (Sandbox Code Playgroud)