我正在使用 Directory.EnumerateFiles()和Directory.GetFiles()获取 c# 中特定目录中的文件数。问题是这些方法很慢,因为它们枚举文件来计数。
c# - 如何在不枚举文件的情况下获取目录中的文件数?
小智 6
您必须枚举文件夹才能获取所有文件。
但是,您仍然可以做一些事情来提高性能。我建议你看看那些基准测试(Get1 方法):
根据基准测试,以下方法似乎提供了最佳性能:
private static int Get1(string myBaseDirectory)
{
DirectoryInfo dirInfo = new DirectoryInfo(myBaseDirectory);
return dirInfo.EnumerateDirectories()
.AsParallel()
.SelectMany(di => di.EnumerateFiles("*.*", SearchOption.AllDirectories))
.Count();
}
Run Code Online (Sandbox Code Playgroud)
S.L*_*.L. -2
我认为你必须使用Directory.GetFiles()或DirectoryInfo类。
优点是,您可以使用 GetFIles 的重载来搜索子目录中的文件,例如
int allfilesCount = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Length;
Run Code Online (Sandbox Code Playgroud)
也许你可以尝试
Directory.EnumerateFiles().Count()
Run Code Online (Sandbox Code Playgroud)
如果它更快的话。
| 归档时间: |
|
| 查看次数: |
6510 次 |
| 最近记录: |