使用.Net计算目录中的文件

时间:2009-07-07 02:19:28

标签: .net file-io

如果我想查看文件夹中有多少文件(可能有10,000多个文件),是否有更有效的方法...

Public Function FileCount(FolderName as String) As Integer  

   Dim Files() As String

   Files = IO.Directory.GetFiles(FolderName)

   Return Files.Length  

End Function

强制加载这样一个可能很大的数组似乎是不可能的。还有更好的建议吗?

5 个答案:

答案 0 :(得分:4)

它是否引起了问题?它不像GetFiles()返回每个文件的内容,而是返回它们的路径,即字符串数组。

答案 1 :(得分:3)

不幸的是,如果不使用interop或提前获取所有路径,则无法枚举.NET 3.5中目录的内容。如上所述,使用File.GetFiles()的缺点是它一次返回所有路径,这会消耗比所需更多的资源。

如果要枚举目录的内容并在枚举时递增计数器,可以尝试以下选项之一。

每当使用interop时,您应该关注从托管代码进行本机WinAPI调用的性能。考虑使用分析器来确定性能损失是否可接受。

答案 2 :(得分:1)

它可能不合适但如果您运行测试并发现性能影响很小,它可能仍然是合适的解决方案。

答案 3 :(得分:0)

我不认为这是一个问题。无论如何,文件都没有打开,函数调用只查询磁盘文件索引或文件分配表中的文件夹下的文件。这与在命令提示符下执行dir没什么不同。

查看它是否真正导致问题的最佳方法是对其进行分析。

答案 4 :(得分:-3)

不,我想

但是你可以返回IO.Directory.GetFiles(FolderName).Length