title: StreamWriter even with AutoFlush true leaves lines half written
body: <p>I have a StreamWriter with an AutoFlush = true property. However, I still see the file only partially written when I randomly open it. I'm writing a file that needs to be fully written (JSON) or not during any given time.</p>
  
  <pre><code>        var sw = new StreamWriter("C:\file.txt", true /* append */, Encoding.ASCII) { AutoFlush = true };
          sw.WriteLine("....");
  
          // long running (think like a logging application) -- 1000s of seconds
  
          sw.Close();
  </code></pre>
  
  <p>In between the sw.WriteLine() call and sw.Close() I want to open the file, and always have it be in the "correct data format", i.e. my line should be complete.</p>
  
  <p>Current Idea:</p>
  
  <p>Increase the internal buffer of FileStream (and/or StreamWriter) to let's say 128KB. Then every 128KB-1, call .Flush() on the FileStream object. This leads me to my next question, when I do call Flush(), should I right before calling it get the Stream.Position and do a File.Lock(Position, 128KB-1)? Or does Flush take care of that?</p>
  
  <p>Basically I don't want the reader to be able to read the contents in between Flush(), because it'll maybe partially broken.</p>