我有一个大文件需要复制到内存中进行进一步处理。该软件适用于小于2GB的文件,但只要它们通过此限制,我就会得到一个异常,即ReadAllBytes只支持小于2GB的文件。
byte[] buffer = System.IO.File.ReadAllBytes(file); // exception if file > 2GB
将大于2GB的文件复制到内存的最快方法是什么?
该过程已经是64位,并且已经设置了标志 gcAllowVeryLargeObjects 。
答案 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来操作数据。