title: Editing large data files
body: <p>I'm about to start on a project wherein I can foresee there being large files (mostly flat text files, but could be CSV, fixed-width, XML, ...so far) that need to be edited.  I need to develop the pieces to do this editing within the application.</p>
  
  <p>In trying to determine a Good Way to handle editing large amounts of data (possibly into the GB range) without having to load the whole thing, I found that Audacity is able to handle large files quite well.  Audacity is open source, so I thought it would make an excellent teaching tool for me in this circumstance.  However, I started thinking myself in circles going through the code and now I'm thoroughly confused.</p>
  
  <p>I'm hoping for two results from this question:</p>
  
  <ol>
  <li><p>A good way to handle this editing without loading the whole file.  I thought about loading the data as they edited it, caching it on demand.</p></li>
  <li><p>An explanation of how Audacity does it.</p></li>
  </ol>
  
  <p>I'm using C# and .NET, but the answers don't need to be coupled to that environment.</p>