C# 大于2GB的文件的System.IO.File.ReadAllBytes

C# 大于2GB的文件的System.IO.File.ReadAllBytes,c#,file,memory,limit,C#,File,Memory,Limit,我有一个大文件需要复制到内存中以便进一步处理。该软件适用于小于2GB的文件,但一旦超过此限制,我就会得到一个例外,ReadAllBytes仅支持小于2GB的文件 byte[] buffer = System.IO.File.ReadAllBytes(file); // exception if file > 2GB 将大于2GB的文件复制到内存的最快方法是什么? 该进程已经是64位的,并且已经设置了标志gcAllowVeryLargeObjects。我怀疑您能比内存映射文件更快地完成任何

我有一个大文件需要复制到内存中以便进一步处理。该软件适用于小于2GB的文件,但一旦超过此限制,我就会得到一个例外,ReadAllBytes仅支持小于2GB的文件

byte[] buffer = System.IO.File.ReadAllBytes(file); // exception if file > 2GB
将大于2GB的文件复制到内存的最快方法是什么?


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

我怀疑您能比内存映射文件更快地完成任何事情


然后可以使用CreateViewAccessor或CreateViewStream来操作数据

您可以增加最大值:但问题是:为什么需要一次将所有内容加载到内存中?使用基于流的方法。分块阅读并处理它?或者让你的进程是64位的?@Tim和Soner,我想如果进程是32位的,光是64位是不够的。@SriramSakthivel:你说得对,第一句话提到了这一点。但我不会将所有内容都加载到内存中。您想如何处理此文件?我非常确信,您可以通过流式解决方案实现这一点。或者逐行阅读,如果您提供更多信息,我们可以帮助您找到一个基于流的解决方案,它也会更有效
using ( var file = MemoryMappedFile.CreateFromFile( "F:\\VeryLargeFile.data" ) )
{
}