Corrections to Chapter 2 of Java I/O, Output Streams

p. 27: In the last paragraph "a linefeed and a tab, respectively" should be "a tab and a linefeed, respectively".

p. 27: The last closing brace is missing from Example 2-1. The complete example should be:

import java.io.*;

public class AsciiChart {

  public static void main(String[] args) {
    
    for (int i = 32; i < 127; i++) {
      System.out.write(i);
      // break line after every eight characters
      if (i % 8 == 7) System.out.write('\n');
      else System.out.write('\t');
    }
    System.out.write('\n');
    
  }
  
}
FYI: This is correct in the online example.

p. 29: In the section on flushing and closing, I made too many assumptions that Java and C meant the same thing by flush(). I should know better by now. (In my defense, this section was written very early on when Sun's documentation on this point was a lot less clear than it is now.) In any case, in Java the flush() method only flushes Java's own buffers such as those provided by java.io.BufferedOutputStream. It does not flush OS or hardware buffers. That can be done by the sync() method in java.io.FileDescriptor.


[ Java I/O Corrections | Java I/O Home Page | Table of Contents | Examples | Order from Amazon ] ]

Copyright 1999 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified June 7, 1999