猿问

是否有更快的方法来在.NET中递归浏览目录?

我在.NET中编写目录扫描器。


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


   class Info {

        public bool IsDirectory;

        public string Path;

        public DateTime ModifiedDate;

        public DateTime CreatedDate;

    }

我有这个功能:


      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

            });

        }


        return info; 

    }

事实证明这种实现是相当缓慢的。有什么办法可以加快速度吗?我正在考虑使用FindFirstFileW进行手动编码,但是如果有一种内置的方法可以更快地避免这种情况,我想避免这种情况。


开满天机
浏览 497回答 3
3回答
随时随地看视频慕课网APP
我要回答