gpt4 book ai didi

c# - 如果 DirectoryInfo.GetFiles().Length 超过 Int32.MaxValue 怎么办?

转载 作者:太空狗 更新时间:2023-10-29 19:40:05 24 4
gpt4 key购买 nike

由另一个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 文件夹中的文件数量?

注意:这不是为什么的问题。我知道,这些文件很多 ;)

最佳答案

Array 上有一个LongLength 属性,它以long 形式返回长度。无论如何,如果 GetFiles 返回超过 Int32.MaxValue 项,您无论如何都会遇到问题...比如 OutOfMemoryException ;)

当您实际上不需要项目数时,我建议您改用 EnumerateFiles 方法(在 4.0 中引入)。它不会一次获取内存中的所有文件名,而是一个一个地获取它们

关于c# - 如果 DirectoryInfo.GetFiles().Length 超过 Int32.MaxValue 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3769062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com