打印流 PrintStream PrintWriter

来源:互联网 发布:java继承和多态的作用 编辑:程序博客网 时间:2024/06/10 03:53

 PrintStream(字节输出流)

PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte型)的格式化表示形式。PrintStream的方法从不抛出IOEceptin

 

PrintWriter(字符输出流)

PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOException。

与PrintStream的区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。


2个输出方法的区别

 writer()方法  以字节的形式输出,不改变原始数据,面向计算机(程序)
 print()方法    以字符形式输出,改变原始数据,面向用户


字节输出流:

//字节输出流@Testpublic void testPrintStream() throws IOException{PrintStream ps1=new PrintStream("a1.txt");ps1.write(97);//写入一个字节  在文档中显示为aps1.write(353);// 在文档中显示为a 写入最后一个字节(256+97)ps1.print(97);// 以字符形式写入整型97ps1.close(); }

a1.txt:

aa97

字符输出流:

//字符输出流@Testpublic void testPrintWriter() throws IOException{PrintWriter pw1=new PrintWriter("b1.txt");//以平台默认编码写入pw1.write(97);//apw1.print(97);//97pw1.print("湖南");pw1.flush();//字符流需要刷缓存}

b1.txt (平台指定编码,在这里是我的MyEclipse的utf-8编码)

a97湖南
自动刷缓存:

@Testpublic void testPrintWriter2() throws IOException{//自动刷缓存PrintWriter pw2=new PrintWriter(System.out,true);pw2.write(97);pw2.print(97);pw2.write("\n湖南");//只有printf、println、format三个方法能自动刷缓存//pw2.println(97);//97}
结果:

@Testpublic void testPrintWriter2() throws IOException{//自动刷缓存PrintWriter pw2=new PrintWriter(System.out,true);pw2.write(97);pw2.print(97);pw2.write("\n湖南");//只有printf、println、format三个方法能自动刷缓存pw2.println(97);//97}
结果:

a97湖南97
指定编码:

@Testpublic void testPrintWriter3() throws IOException{PrintWriter pw3=new PrintWriter("b2.txt", "gbk");//自己指定的编码pw3.print(97);pw3.print("编码");pw3.flush();pw3.close();//关闭字符流,会自动为我们刷一次缓存}
b2.txt:(gbk编码)

97编码


@Testpublic void demo() throws IOException{PrintStream ps=new PrintStream("log.txt");System.setOut(ps);//更改系统的OutPutStream,使其存入log.txt文本.System.out.println("日志文件");//输出到日志文件中}
log.txt

日志文件

阅读全文
0 0
原创粉丝点击