[英]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.