I was having a look at this tutorial at Sun on command line I/O. It stated that:
You might expect the Standard Streams to be character streams, but, for historical reasons, they are byte streams. System.out and System.err are defined as PrintStream objects. Although it is technically a byte stream, PrintStream utilizes an internal character stream object to emulate many of the features of character streams.
Does any one know what "the historical reasons" are?