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

我有一个大文件,我需要复制到内存进行进一步处理。 该软件适用于小于2GB的文件,但只要它们通过此限制,我就会得到一个exception,即ReadAllBytes仅支持小于2GB的文件。

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

将大于2GB的文件复制到内存的最快方法是什么?

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

我怀疑你能比内存映射文件更快地做任何事情http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(v=vs.110).aspx 。

 using ( var file = MemoryMappedFile.CreateFromFile( "F:\\VeryLargeFile.data" ) ) { } 

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