读取大于2GB的文件的System.IO.File.ReadAllBytes方法

3

我有一个大文件需要复制到内存中进行进一步处理。对于小于2GB的文件,软件可以正常工作,但是一旦超过这个限制,就会出现异常,提示ReadAllBytes仅支持小于2GB的文件。

byte[] buffer = System.IO.File.ReadAllBytes(file); // exception if file > 2GB

如何最快地将大于2GB的文件复制到内存中?

进程已经是64位的,并且标志gcAllowVeryLargeObjects已经设置。


你可以增加最大值:http://msdn.microsoft.com/en-us/library/hh285054.aspx 但问题是:为什么需要一次性将所有内容加载到内存中?使用基于流的方法。 - Tim Schmelter
分块读取并处理?还是将您的进程改为64位? - Sriram Sakthivel
@Tim 和 Soner,我猜如果进程是32位的话,仅仅这样还不够。 - Sriram Sakthivel
@SriramSakthivel:你说得对,这在第一句话中已经提到了。但是我不会把所有内容都加载到内存中。 - Tim Schmelter
2
你想对这个文件做什么?我相信你可以用流的方式来实现。或者逐行读取,如果你提供更多信息,我们可以帮助你找到基于流的解决方案,这样会更加高效。 - Boas Enkler
值得尝试并寻找另一种不需要这个的方法。这种方法最终会给你带来很多痛苦。 - Alireza
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接