using (FileStream stream = File.OpenRead(filePath))
{
var data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
}
我在该行抛出了OutOfMemoryException(不是在流读取期间,而是在字节初始化期间:
data = new byte[stream.Length];
[编辑15-12-2015]
文件大小约为600MB,但最高可达2GB。
较短版本的代码也失败了:
var data = File.ReadAllBytes(filePath);
答案 0 :(得分:1)
您的文件大小是否超过 2 GB 并且您使用的是 32位系统?看起来你超出了限制,没有一个对象可以大于2 GB(至少在32位系统的情况下)。考虑改为流式传输数据。
但是使用.NET Framework 4.5,您可以使用<gcAllowVeryLargeObjects>
元素支持您使用总大小超过2 GB的对象。
以下是您必须使用的配置;
<configuration>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>