第一个打印流:字节打印流 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("湖南城院");//可以自动刷新
}