如果我想查看文件夹中有多少文件(可能有10,000多个文件),是否有更有效的方法...
Public Function FileCount(FolderName as String) As Integer
Dim Files() As String
Files = IO.Directory.GetFiles(FolderName)
Return Files.Length
End Function
强制加载这样一个可能很大的数组似乎是不可能的。还有更好的建议吗?
答案 0 :(得分:4)
它是否引起了问题?它不像GetFiles()返回每个文件的内容,而是返回它们的路径,即字符串数组。
答案 1 :(得分:3)
不幸的是,如果不使用interop或提前获取所有路径,则无法枚举.NET 3.5中目录的内容。如上所述,使用File.GetFiles()
的缺点是它一次返回所有路径,这会消耗比所需更多的资源。
如果要枚举目录的内容并在枚举时递增计数器,可以尝试以下选项之一。
IEnumerable<T>
来枚举目录的内容。每当使用interop时,您应该关注从托管代码进行本机WinAPI调用的性能。考虑使用分析器来确定性能损失是否可接受。
答案 2 :(得分:1)
它可能不合适但如果您运行测试并发现性能影响很小,它可能仍然是合适的解决方案。
答案 3 :(得分:0)
我不认为这是一个问题。无论如何,文件都没有打开,函数调用只查询磁盘文件索引或文件分配表中的文件夹下的文件。这与在命令提示符下执行dir
没什么不同。
查看它是否真正导致问题的最佳方法是对其进行分析。
答案 4 :(得分:-3)
不,我想
但是你可以返回IO.Directory.GetFiles(FolderName).Length