2

据我所知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);

    ...

我在控制台中看到字符。这种情况让我很困惑。请澄清我的误解。字节流字符流这两个术语的真正含义是什么?

4

1 回答 1

3

该类PrintStream是由于历史原因而存在的语义异常。在 Java 设计者认识到需要为字符流和字节流提供不同的“堆栈”之前,该类就存在于 Java 1.0中。它代表了在 Java 中进行简单文本输出的“原始方式”……之前Writer,它的子类型是在 Java 1.1 中引入的。

所以事实上,字节流和字符流(可能)正是它们在你看来的意思。无论如何,Java 教程中最好地描述了它们的含义:


1 - 他们可能更早地意识到了这一需求,但是有压倒一切的“商业原因”来快速发布 Java 1.0。

于 2014-07-14T13:45:32.320 回答