您的位置:首页 > 其它

IO流加强(四)打印流

2017-03-29 13:34 99 查看
第一个打印流:字节打印流 PrintStream

存下字节

@Test
public void printStreamDemo() throws FileNotFoundException{
PrintStream out = new PrintStream("a.txt");
out.write(97);
out.write(353);
// 353  的最后一个字节是 97 所以是只存最后一个字节 97
// 并且 是以二进制的 353 方式存储

}


结果



@Test
public void printStreamDemo2(){
// 原来System.out  也是字节型打印流啊
PrintStream out =System.out;
System.out.println("我是字节打印流,然后.close() 会怎么样");
out.close();
System.out.println("看不到我");
}


结果 关流之后输出不了



@Test
public void printStreamDemo3() throws IOException{
// 原来System.out  也是字节型打印流啊
PrintStream out =new PrintStream("ab.txt");
System.setOut(out);
System.out.println("屏幕输出不了我了,我到ab.txt文件去了");
}


屏幕没有了,在文件了



第二个:字符打印流(字符就要想想缓存的事)

/*

* ★字符流要记得刷缓存

*

* PrintWriter的功能和PrintStream基本相同,

* 主要区别是PrintWriter为字符流(带缓存,即有一些跟缓存有关的功能)

*/

@Test
public void printWriterDemo() throws IOException{
PrintWriter out = new PrintWriter("pwb.txt");
out.write(97);   // a  面向机器,会转化为a
out.print(97);  // 97  面向用户  写的是什么看到的就是什么
// 然后 打开文件 没有 忘记刷缓存
out.flush();
out.close(); //记得关流

}




有几个方法不用刷缓存,自动刷,但是构造方法要设为true

即使下面设置了true,还要只有println、printf 或 format方法才会自动刷新

@Test //演示自动刷缓存
public void printWriterDemo2(){
//注意,即使下面设置了true,还要只有println、printf 或 format方法才会自动刷新
PrintWriter pw = new PrintWriter(System.out,true);
//pw.print("湖南城院");
//pw.flush(); //上面一句不会自动刷新,还是需要手动调用flush()

pw.println("湖南城院");//可以自动刷新
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: