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

时间:2010-09-22 12:14:32

标签: c# asp.net 64-bit filesystems

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

 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文件夹中的文件数量?是否优雅且具有表现力?

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

1 个答案:

答案 0 :(得分:6)

LongLength上有Array个属性,其长度为long。无论如何,如果GetFiles返回的项目超过Int32.MaxValue,那么无论如何都会遇到问题...就像OutOfMemoryException;)

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