System.IO.File.ReadAllBytes for file larger than 2GB

11,802

I doubt you can do anything faster than a memory mapped file http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(v=vs.110).aspx.

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

You can then use CreateViewAccessor or CreateViewStream to manipulate the data.

Share:
11,802
user2033412
Author by

user2033412

Updated on June 04, 2022

Comments

  • user2033412
    user2033412 almost 2 years

    I have a large file that I need to copy to memory for further processing. The software works fine for files smaller than 2GB, but as soon as they pass this limit I get an exception that ReadAllBytes only supports files smaller than 2GB.

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

    What is the fastest way to copy a file larger than 2GB to memory?

    The process is already 64bit and the flag gcAllowVeryLargeObjects is already set.