我在Sun的命令行I/O 上看了一下这个教程.它表示:
您可能希望标准流是字符流,但由于历史原因,它们是字节流.System.out和System.err定义为PrintStream对象.虽然从技术上讲它是字节流,但PrintStream利用内部字符流对象来模拟字符流的许多功能.
有谁知道"历史原因"是什么?
"历史原因"是Java 1.0中不存在字符流.显然,Sun意识到字符转换模型不足,并且在Java 1.1中添加了面向字符的Reader/Writer类层次结构.
但是对于System.out和朋友来说已经太晚了.