相关疑难解决方法(0)

快速获取特定路径中的所有文件和目录

我正在创建一个备份应用程序,其中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)

c# performance fileinfo

67
推荐指数
3
解决办法
16万
查看次数

有没有更快的方法在.NET中递归扫描目录?

我在.NET中编写目录扫描程序.

对于每个文件/目录,我需要以下信息.

   class Info {
        public bool IsDirectory;
        public string Path;
        public DateTime ModifiedDate;
        public DateTime CreatedDate;
    }
Run Code Online (Sandbox Code Playgroud)

我有这个功能:

      static List<Info> RecursiveMovieFolderScan(string path){

        var info = new List<Info>();
        var dirInfo = new DirectoryInfo(path);
        foreach (var dir in dirInfo.GetDirectories()) {
            info.Add(new Info() {
                IsDirectory = true,
                CreatedDate = dir.CreationTimeUtc,
                ModifiedDate = dir.LastWriteTimeUtc,
                Path = dir.FullName
            });

            info.AddRange(RecursiveMovieFolderScan(dir.FullName));
        }

        foreach (var file in dirInfo.GetFiles()) {
            info.Add(new Info()
            {
                IsDirectory = false,
                CreatedDate = file.CreationTimeUtc,
                ModifiedDate = file.LastWriteTimeUtc,
                Path = file.FullName
            });
        } …
Run Code Online (Sandbox Code Playgroud)

.net c# filesystems

28
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

fileinfo ×1

filesystems ×1

performance ×1