从目录中获取文件计数,而不枚举c#中的文件
本文关键字:文件 枚举 获取 | 更新日期: 2023-09-27 18:17:29
我使用Directory.EnumerateFiles()
和Directory.GetFiles()
来获取c#中特定目录中的文件计数。问题是这些方法很慢,因为它们枚举文件来获得计数。
如何在c#中获得目录中没有枚举文件的文件计数?
您必须遍历文件夹以获得所有文件。
但是,您仍然可以做一些事情来提高性能。我建议您看一下这些基准测试(Get1方法):
https://stackoverflow.com/a/17756559/3876750根据基准测试,下面的方法似乎提供了最好的性能:
private static int Get1(string myBaseDirectory)
{
DirectoryInfo dirInfo = new DirectoryInfo(myBaseDirectory);
return dirInfo.EnumerateDirectories()
.AsParallel()
.SelectMany(di => di.EnumerateFiles("*.*", SearchOption.AllDirectories))
.Count();
}
我实际上从未尝试过更快的方法,但这是一个好问题…通过搜索,我找到了这个
http://www.codeproject.com/Articles/38959/A-Faster-Directory-Enumerator基准比较看起来相当不错…
嗨,也许这有助于它返回字符串[]
String[] files = Directory.GetFileSystemEntries("path");
我认为你必须使用Directory.GetFiles()或DirectoryInfo类。
的优点是,你可以使用GetFIles重载来搜索子目录中的文件,例如
int allfilesCount = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Length;
MSDN DirectoryInfo
也许你可以试试
Directory.EnumerateFiles().Count()