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