据我所知java.io
分为字节流和字符流。
用于读写字节和字符流的字节流,用于读写字符。
PrintStream
具有以下继承层次结构:
Object <- OutputStream <- FilterOutputStream <- PrintStream.
因此,我决定PrintStream
与读取和写入字节有关。
但如果写下这样的话:
PrintStream output = new PrintStream(System.out);
output.print(true);
output.print((int) 123);
output.print((float) 123.456);
output.printf(Locale.UK, "Text + data: %1$d", 123);
...
我在控制台中看到了个字符。 这种情况让我困惑。请澄清我的误解。 术语字节流和字符流的含义是什么?
答案 0 :(得分:3)
PrintStream
类是出于历史原因而存在的语义异常。在Java设计人员认识到 1 需要为字符和字节流提供不同的“堆栈”之前,该类存在于Java 1.0中。它表示在Java中进行简单文本输出的“原始方式”......在Writer
之前及其子类型是在Java 1.1中引入的。
事实上,字节流和字符流(可能)正是它们看起来的意思。无论如何,他们的意思最好在Java教程中描述:
1 - 他们可能更早地意识到了这种需求,但是有很多“商业原因”让Java 1.0很快发布。