簡體   English   中英

FileStream獲取錯誤算術運算導致溢出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM