当前位置:  开发笔记 > 编程语言 > 正文

如何找出目录中有多少文件?

如何解决《如何找出目录中有多少文件?》经验,为你挑选了2个好方法。

我需要计算目录中的文件数.我可以使用该目录中的所有文件的名称System.IO.Directory.GetFiles()并获取该数组的长度,但在大型目录上需要太长时间.有没有办法获得计数而不必得到名字?



1> Jon Skeet..:

我不相信,不 - 至少不是在vanilla .NET中.我怀疑这不是实际取名的花费时间 - 这是操作系统遍历目录内部.有可能是一个Win32调用,你可以通过P/Invoke的制作.

你正在查看的目录有多大?一般来说,在目录中拥有超过几百个文件至少在传统上并不是一个好主意.文件系统在这方面有所改进,但我不知道NTFS和Fat32目前的状态.



2> abatishchev..:

我做了一点测试 - 在C++/Qt和C++/CLI中编写了相同的任务:

LARGE_INTEGER i1, i2;       

QueryPerformanceCounter(&i1);       

int count = IO::Directory::GetFiles(L"c:\\windows\\system32")->Length;

QueryPerformanceCounter(&i2);

__int64 result = i2.QuadPart - i1.QuadPart;

结果大约是16.500.000

LARGE_INTEGER i1, i2;

QueryPerformanceCounter(&i1);

intcount = QDir("c:/windows/system32").entryList(QDir::Files).count();

QueryPerformanceCounter(&i2);

__int64 result += i2.QuadPart - i1.QuadPart;

结果大约是2.100.000.000

文件数量为2125

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有