★打印流的特点:
1)只有输出没有输入。PrintStream是字节打印流,PrintWriter是字符打印流。
2)能够方便地打印各种数据“值表示形式”,提供了一系列的打印功能(只有它有,其它流都没有。)
3)和其他输出流不同,它永远不会抛出IOException异常(构造方法除外),异常内部解决且设置了内部标志。
4)可创建具有自动刷新的功能,可使用带换行符的println()方法。
5)(在构造方法中)可以指定字符集编码的。
★关于打印流的自动刷新
只有遇到结束字符(换行符)时才会自动刷新,如在调用其中一个println方法或写入换行符或字节('\n)时会自动刷新输出缓冲区。
package ThreadIO2_1.IO.print;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
/**
* System.out就是PrintStream类型
*/
public class PrintStreamDemo {
public static void main(String[] args) {
try {
//demo1();
demo2();
for(int i=0;i<10;i++){
System.out.println(i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//把System.out的输出目的地从屏幕更改到日志文件
private static void demo2() throws IOException {
FileOutputStream fout = new FileOutputStream("log.txt");
PrintStream out = new PrintStream(fout, true);
System.setOut(out);
}
private static void demo1() throws IOException {
PrintStream out=new PrintStream("print.txt");
//out.write(97);
out.write(353);//最后一个字节是97,因此写入的是一个字符'a'----写入的是值的表现形式
//System.out.write(353);//输出'a'
//System.out.flush();
out.println(345);//把参数转换成字符串输出 ---a345
//上一句等价于out.write( String.valueOf(i) )
<span style="color:#cc0000;">//※总之,PrintStream中用write()输出的是字节数据且每次只输出一个字节,而print()输出的是数据的值的表现形式即转换成字符串输出。
//JSP中的out对象就是这种类型。要输出字节数据如图片声明等二进制格式则必须用write(),而输出页面数据(字符)则要用print()或println()</span>
}
}