繁体   English   中英

如果DirectoryInfo.GetFiles()。长度超过Int32.MaxValue怎么办?

[英]What if DirectoryInfo.GetFiles().Length exceeds Int32.MaxValue?

关于文件夹中文件的最大数量的另一个问题 ,我注意到了

 DirectoryInfo.GetFiles().Length

返回System.In32,但Int32的最大值是

 2.147.483.647  (Int32.MaxValue) 

在NTFS(许多其他文件系统)上,最大文件数可以远远超过这个。

在NTFS上它是

 4.294.967.295 single files in one folder (probably an Uint32)

这引出了一个有趣的问题:

当文件数超过Int32.MaxValue时,是否可以使用.NET框架获取NTFS上文件夹中的文件数量,以优雅和执行的方式?

注意:这不是原因。 我知道,这些是很多文件;)

Array上有一个LongLength属性,它返回长度为long 无论如何,如果GetFiles返回的内容多于Int32.MaxValue项,那么无论如何都会出现问题...就像OutOfMemoryException ;)

如果您实际上不需要项目数,我建议您使用EnumerateFiles方法(在4.0中引入)。 它不会立即获取内存中的所有文件名,而是逐个获取它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM