title: System.IO.FileStream is super slow on huge files
body: <p>I have a piece of code that needs to be able to modify a few bytes towards the end of a file. The problem is that the files are huge. Up to 100+ Gb.</p>
  
  <p>I need the operation to be as fast as possible but after hours of Googeling, it looks like .Net is rather limited here???</p>
  
  <p>I have mostly been trying using System.IO.FileStream and know of no other methods. A "reverse" filestream would do but I have know idea how to create one (write from the end instead of the beginning).</p>
  
  <p>Here is sort of what I do: (Note: the time is spent when closing the stream)</p>
  
  <pre><code>    static void Main(string[] args)
      {    
          //Simulate a large file
          int size = 1000 * 1024 * 1024;
          string filename = "blah.dat";
          FileStream fs = new FileStream(filename, FileMode.Create);
          fs.SetLength(size);
          fs.Close();
  
          //Modify the last byte
          fs = new FileStream(filename, FileMode.Open);
  
          //If I don't seek, the modification happens instantly
          fs.Seek(-1, SeekOrigin.End);
          fs.WriteByte(255);
  
          //Now, since I am modifying the last byte, 
          //this last step is very slow
          fs.Close();
      }
  }
  </code></pre>