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

时间:2014-11-12 08:06:14

标签: c# file memory limit

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

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

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

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

1 个答案:

答案 0 :(得分:2)

我怀疑你能比内存映射文件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来操作数据。