有沒有辦法在目錄中的最大文件數量上拋出新的異常?文件最大數量上的錯誤
回答
沒有,也沒有了:
你可以用一個更通用的
System.IO.IOException
捕捉到它並讀取(基本)消息你可以從這一點上拋出一個自寫的例外。
UPDATE I just learned。您使用的是
bool isfull = info.GetFiles().LongLength == 4.294.967.295
財產。不幸的是,它會吃掉你所有的記憶。
因此,使用
DirectoryInfo.EnumerateFiles().Count()
也許在分塊的方式可能是一個更好的辦法
FYI:
- 65,534爲FAT32
- 4,294,967,295對於NTFS
(source)
我的猜測是你的應用程序在將'true'賦值給'isFull'變量之前將耗盡RAM。只是持有對這些數組中40億條目的引用將消耗4GB,這是排除實際的字符串... – 2010-09-22 12:41:47
大聲笑,我補充說明。 – 2010-09-22 12:49:54
我不知道C#的具體內容,但我知道Java沒有特定的異常或錯誤來拋出一個完整的驅動器。我建議簡單地製作你自己的異常類並使用它。我建議將它稱爲FullDirectoryError
或DirectoryOverflowError
,假設它足夠嚴重以致稱爲錯誤。
像這樣的東西?
public static void checkFileNumber(string directoryToCheck, int maxNumber)
{
if (Directory.Exists(directoryToCheck))
{
if (Directory.GetFiles(directoryToCheck).Length > maxNumber)
{
throw new Exception("Too many files in " + directoryToCheck);
}
}
}
一定要use System.IO;
:-)
什麼是目錄的最大數目? – Ata 2010-09-22 06:23:56
當我在directoryToCheck中有超過maxNumber的文件(真實文件而不是目錄)時,我發佈的代碼會拋出一個異常。 – 2010-09-22 06:32:34
現在我明白了:限制取決於文件系統類型。一個快速的報告顯示了這些限制:FAT16 512條目,FAT32 65,534條目,NTFS 4,294,967,295條目 – 2010-09-22 06:34:11
投擲異常是一個昂貴的操作;當你可以避免它時,請這樣做。如果可能的話,嘗試防守編程。但是當拋出一個,你必須提供一個特定的例外匹配。
就像Casper Kleijne說的那樣,你可以捕捉到IOException,但是爲什麼首先你會想要捕捉呢?漁獲物的補償行爲是什麼?
請提供一些更多的信息,你想用它來實現。
- 1. 限制錯誤的最大數量
- 2. ASP.NET中的最大文件上傳大小錯誤Razor網站
- 3. 上傳文件錯誤大
- 4. 構建錯誤「已超出最大錯誤數」文件vbc
- 5. C#中文件的最大數據量?
- 6. 文件夾上的圖像的最大數量
- 7. 大cvs文件上的fgets錯誤
- 8. ipa或apk上的最大文件數
- 9. 允許上傳文件的最大數量已超過
- 10. 上傳前如何驗證文件的最大數量?
- 11. 在zip文件上分發大量數據的最佳方式
- 12. 錯誤!:太多的資源數據,允許的最大數量
- 13. Python中的最小/最大函數的參數數量的錯誤
- 14. PHPMyAdmin最大上傳大小不會改變,錯誤的php.ini文件
- 15. 顯示struts2的最大文件大小錯誤
- 16. IIS 7.5 500大文件上傳錯誤
- 17. 大文件上傳錯誤與PHP
- 18. PHP文件上傳大於upload_max_filesize,錯誤
- 19. 錯誤上傳文件大於2 MB
- 20. 上傳大文件時出現錯誤
- 21. Ajaxplorer大文件下載/上傳錯誤
- 22. PHP:可上載文件的最大數量,最多25個條目的$ _FILES
- 23. Tomcat最大併發文件上傳數
- 24. CSV文件打開錯誤爲「已超出最大行數」
- 25. 錯誤glmmadmb(.....)函數最大化失敗(找不到STD文件)
- 26. GCE上的大量請求和錯誤
- 27. 適用於Android和iOS的最大文件大小和數量
- 28. 最大數量的Bash參數!=最大數量cp參數?
- 29. 最大數量
- 30. 最大數量
您的問題非常模糊。請更具體一些,並閱讀http://tinyurl.com/so-hints。 – 2010-09-22 05:27:14
當你達到目錄中的最大文件數目時,你想要做什麼?寫新文件? – chakrit 2010-09-22 05:27:56
我想會有一個例外或系統創建下一個文件時出錯。你的意思是軟件定義的限制嗎?你想對這個異常做什麼?在其他地方寫文件?然後只是預先構建您的目錄以避免這種情況(使用日期或目錄名稱中的某個計數器)... – pascal 2010-09-22 07:59:07