[英]FileStream get error Arithmetic operation resulted in an overflow
我嘗試使用這種方法從文件中獲取字節
byte[] b1;
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
b1= new byte[fs.Length];
int bytesRead = fs.Read(b1, 0, b1.Length);
}
但是,當我使用文件大小= 4.9GB對其進行測試時,它的拋出異常表示算術運算導致溢出。
byte[]
的最大長度只能為2,147,483,647。 試圖創建一個比該更長的btye[]
將導致拋出OverflowException
基本上,要檢查解決方案中的算術溢出異常,可以在項目屬性->構建->高級->檢查算術溢出/下溢中進行設置
但是此屬性可能會在運行時導致性能問題。 因此,在使用整數時必須小心。 如上所述,您的文件大小為4.9GB,因此4,900,000,000> 2,147,483,647(您可以在c#中使用Int32.MaxValue進行檢查)
要恢復,在使用文件流時,必須檢查您的輸入參數,並通過添加一些try catch塊來避免出現未處理的異常(這些異常會給用戶帶來不好的體驗),以期望出現此類問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.