java文档说在处理文本时使用Printwriter而不是Printstream,但为什么会这样呢?我知道Printwriter处理字符流,Printstream处理字节流,但它们最终都是字节。并且由于Java 1.5 PrintStream并没有被限制为使用平台默认编码;有些构造函数接受字符集名称。那么Printwriter相对于Printstream有什么好处呢?
PrintStream
是古老的。首选PrintWriter
。实际上,最好两者都不使用,因为这两个类都默默地接受异常。
我建议使用OutputStreamWriter
和BufferedWriter
。
PrintStream
不能使用默认字符集以外的字符编码。如果您需要将字符串写入UTF-8字节,并且默认JVM字符集是Windows-1252(在Windows上运行Java时就是这样(,那么PrintWriter
可以做到这一点,而PrintStream
不能。我认为这是主要区别。
PrintWriter
不允许您编写byte[]
,而PrintStream
允许。允许直接写入CCD_ 11会因为混合了不应该混合的字符编码而增加出错的可能性。
PrintWriter
允许您直接写入char[]
,而PrintStream
则不允许。
PrintWriter
允许您在不分配新String的情况下编写String的切片。