本文主要介绍PrintStream和PrintWriter的区别,有一定的参考价值,有需要的朋友可以参考一下。
PrintStream和PrintWriter的API差不多,都可以输出各种形式的数据,构造方法也差不多。
PrintWriter还有一个参数来接受Writer。
API比较:
那么,它们之间有什么区别呢?来自堆栈流
主要意思是两个类的功能基本相同。PrintStream能做的PrintWriter也能实现,而且PrintWriter的功能更强大。但由于PrintWriter出现较晚,更早的System.out是由PrintStream实现的,所以PrintStream并没有因为兼容性而被放弃。
两个类最大的区别是PrintStream在输出字符转换成字节时使用系统默认的编码格式,这样当数据传输到另一个平台,另一个平台使用另一种编码格式进行解码时,就会出现问题和不可控因素。而PrintWriter可以在Writer传入时由程序员指定字符转换成字节时的编码格式,这样兼容性和可控性会更好。
下面的程序显示了两个对象PrintStream和PrintWriter如何处理相同的输出目的。该程序将在屏幕上显示四个字符“简体中文”:
StreamWriterDemo.java
只打包onlyfun.caterpillar
导入Java . io . *;
公共类StreamWriterDemo
{
公共静态void main(String[] args) {
尝试{
Byte [] sim={(字节)0xbc,(字节)0xf2,//Jane
(字节)0xcc,(字节)0xe5,//body
(字节)0xd6,(字节)0xd0,//
(字节)0xce,(字节)0xc4
}
;
//文本
InputStreamReader InputStreamReader=new InputStreamReader(new bytearray inputstream(sim), GB 2312 );
PrintWriter PrintWriter=new PrintWriter(new output streamwriter(system . out, GB 2312 ));
PrintStream PrintStream=new PrintStream(system . out,true, GB 2312 );
int in
while((in=inputstreamreader . read())!=-1) {
printwriter . println((char)in);
print stream . println((char)in);
}
inputstreamreader . close();
printwriter . close();
printstream . close();
}
catch(ArrayIndexOutOfBoundsException e){
e . printstacktrace();
}
catch(IOException e) {
e . printstacktrace();
}
}
}
总结
这就是本文中关于PrintStream和PrintWriter的区别。希望对你有帮助。感兴趣的朋友可以继续参考本站其他相关话题。如有不足之处,欢迎留言指出。感谢您对本网站的支持!