为什么在 Java 中使用 Printwriter 而不是 PrintStream 来输出人类可读的文本

Why use Printwriter over PrintStream in Java for outputting human readable text

java 文档说在处理文本时使用 Printwriter 而不是 Printstream,但为什么会这样呢?我知道 Printwriter 处理字符流,而 Printstream 处理字节流,但它们在一天结束时都是字节。并且自从 Java 1.5 PrintStream 开始就不再局限于使用平台默认编码;有些构造函数接受字符集名称。那么 Printwriter 比 Printstream 有什么好处呢?

PrintStream是古代。更喜欢PrintWriter。实际上,最好什么都不用,因为两个 类 都会静静地吞下异常。

我建议使用由 BufferedWriter 包裹的 OutputStreamWriter

PrintStream 不能使用默认字符集以外的字符编码。如果您需要将字符串写成 UTF-8 字节并且默认的 JVM 字符集是 Windows-1252(就像 Windows 上 运行 Java 时的情况),那么 PrintWriter 可以做到,而 PrintStream 不能。我认为这是主要区别。

PrintWriter 不允许您写 byte[],而 PrintStream 可以。允许直接写入 byte[] 可能会因混合不应混合的字符编码而出错。

PrintWriter 允许您直接写一个 char[]PrintStream 则不允许。

PrintWriter 允许您在不分配新字符串的情况下编写字符串的一部分。