title: bufferedwriter stops in the middle of writing
body: <p>For some reason this code results in a truncated text.txt file. It should (according to me) write out 1000 results, but the output file has various amounts of lines (depending on the run). Weirdly, the writing to the file stops in the middle of the write command, such that a line may not be complete. Currently, the last three lines of the text file for the latest run was as follows:</p>
  
  <pre><code>749, 78.97988, 97.80454, 99.6625, 94.00000015258789
  750, 4.1745043, 86.64212, 107.59311, 71.00000008583069
  751,
  </code></pre>
  
  <p>and that's it. Nothing else after that.</p>
  
  <p>Here is the code:</p>
  
  <pre><code>import java.io.BufferedWriter;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.Writer;
  import java.util.Random;
  
  public class ColorGrayScale {
  
  /**
   * @param args
   * @throws IOException
   */
  @SuppressWarnings("resource")
  public static void main(String[] args) throws IOException {
      // TODO Auto-generated method stub
      Writer out = new BufferedWriter(new FileWriter("test.txt"),16*1024);
      Random generator = new Random();
      float red = 0, green = 0, blue = 0;
      int i = 0;
  
      while (i&lt;1000) {
  
          float grey = generator.nextInt(127) + 64;
          int sequence = generator.nextInt(6) + 1; // to pick from 1 of six
                                                      // orders
          switch (sequence) { // the various orders that red green and blue
                              // are going to be in
          case 1:
              red = (float) (generator.nextFloat() * (grey / .21));
              green = (float) (generator.nextFloat() * ((grey - (red * .21)) / .71));
              blue = (float) ((grey - (red * .21) - (green * .71)) / 0.08);
              break;
          case 2:
              red = (float) (generator.nextFloat() * (grey / .21));
              blue = (float) (generator.nextFloat() * ((grey - (red * .21)) / .08));
              green = (float) ((grey - (red * .21) - (blue * .08)) / 0.71);
              break;
          case 3:
              green = (float) (generator.nextFloat() * (grey / .71));
              red = (float) (generator.nextFloat() * ((grey - (green * .71)) / .21));
              blue = (float) ((grey - (red * .21) - (green * .71)) / .08);
              break;
          case 4:
              green = (float) (generator.nextFloat() * (grey / .71));
              blue = (float) (generator.nextFloat() * ((grey - (green * .71)) / .08));
              red = (float) ((grey - (green * .71) - (blue * .08)) / .21);
              break;
          case 5:
              blue = (float) (generator.nextFloat() * (grey / .08));
              red = (float) (generator.nextFloat() * ((grey - (blue * .08)) / .21));
              green = (float) ((grey - (blue * .08) - (red * .21)) / .71);
              break;
          case 6:
              blue = (float) (generator.nextFloat() * (grey / .08));
              green = (float) (generator.nextFloat() * ((grey - (blue * .08)) / .71));
              red = (float) ((grey - (blue * .08) - (green * .71)) / .21);
              break;
          }
          if (red &lt; 256 &amp;&amp; blue &lt; 256 &amp;&amp; green &lt; 256) {
               out.write("" + i + ", " + red + ", " + green + ", " + blue
                      + ", " + (.21 * red + .71 * green + 0.08 * blue + "\n"));
              i++;
          }
      }
  }
  </code></pre>
  
  <p>}</p>