Mar*_*aux 121 java io printstream printwriter
PrintStream和之间有什么区别PrintWriter?他们有许多共同的方法,因此我经常混合这两个类.而且,我认为我们可以将它们用于完全相同的事情.但必须有区别,否则,只会有一个班级.
我搜索了档案,但找不到这个问题.
mdm*_*dma 126
这可能听起来很轻浮,但PrintStream打印到OutputStream,并PrintWriter打印到Writer.好吧,我怀疑我会说明显而易见的任何要点.但还有更多.
那么,OutputStreama和a 之间有什么区别Writer?两者都是流,主要区别是a OutputStream是字节流,而Writer是字符流.
如果Writer处理字节,那么OutputStream呢?它使用默认平台编码将字符转换为字节.使用默认编码通常是一件坏事,因为当从一个平台移动到另一个平台时,它可能会导致错误,特别是如果您在一个平台上生成文件并在另一个平台上使用它.
使用a PrintStream.print(String),您通常会指定要使用的编码,从而避免任何平台依赖性.
为什么麻烦Writer在JDK中,因为主要意图是写字符,而不是字节?PrintStream在引入Reader/Writer字符流时,早于JDK 1.1.我想PrintStream如果只是因为它如此广泛使用,Sun会弃用.(毕竟,您不希望每次调用都PrintStream生成一个弃用的api警告!此外,将类型从标准输出流更改System.out为PrintStreamon会破坏现有应用程序.)
Bal*_*usC 60
随着PrintStream你坚持平台的默认编码.
PrintStream stream = new PrintStream(output);
Run Code Online (Sandbox Code Playgroud)
PrintWriter然而,您可以通过OutputStreamWriter特定的编码传递.
PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
好处是,您可以控制字符编码,应该写入字符,使它们最终不会像mojibake一样.
Ren*_*one 18
从JDK 1.4开始,可以为PrintStream指定字符编码.因此,PrintStream和PrintWriter之间的区别仅在于自动刷新行为,而PrintStream无法包装Writer.
| 归档时间: |
|
| 查看次数: |
61956 次 |
| 最近记录: |