繁体   English   中英

为什么在 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 一样, PrintWriterPrintStream可以做到这一点)。 这是主要的区别,我认为。

PrintWriter不允许您写入byte[] ,而PrintStream则允许。 允许直接写入byte[]会通过混合不应混合的字符编码来增加出错的可能性。

PrintWriter允许您直接写入char[]PrintStream不允许。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM