簡體   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