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



java文档说在处理文本时使用Printwriter而不是Printstream,但为什么会这样呢?我知道Printwriter处理字符流,Printstream处理字节流,但它们最终都是字节。并且由于Java 1.5 PrintStream并没有被限制为使用平台默认编码;有些构造函数接受字符集名称。那么Printwriter相对于Printstream有什么好处呢?

PrintStream是古老的。首选PrintWriter。实际上,最好两者都不使用,因为这两个类都默默地接受异常。

我建议使用OutputStreamWriterBufferedWriter

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

PrintWriter不允许您编写byte[],而PrintStream允许。允许直接写入CCD_ 11会因为混合了不应该混合的字符编码而增加出错的可能性。

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

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

最新更新