1 打印流
PrintStream
PrintWriter
1.1 打印流特点
- 此流不负责数据源,只负责数据目的;
- 为其他输出流添加了功能;
- 永远不会抛出
IOException
,但是可能抛出其他异常; - 两个打印流方法完全一致;
1.2 两个流的构造方法有区别
构造方法,就是打印流的输出目的端。
- PrintStream
,构造方法,接收File类型,接收字符串文件名,接收字节输出流OutputStream
- PrintWriter
,构造方法,接收File类型,接收字符串文件名,接收字节输出流,接收字符输出流Writer
1.3 打印流输出目的是File对象
- 打印流,向File对象的数据目的写入数据;
- 方法
print
,println
,原样输出;
1.4 打印流输出目的是 String 文件名
public static void function_1() throws FileNotFoundException {
PrintWriter pw=new PrintWriter("h:\\test\\2.txt");
pw.print(3.5);
pw.close();
}
1.5 打印流输出目的是流对象
- 可以是字节输出流,可以是字符的输出流;
OutputStream
,Writer
public static void function_2() throws IOException {
FileOutputStream fos = new FileOutputStream("h:\\test\\3.txt");
//FileWriter fw=new FileWriter("h:\\test\\4.txt");
PrintWriter pw = new PrintWriter(fos);
pw.println("打印流");
pw.flush();
pw.close();
}
1.6 打印流可以开启自动刷新功能
满足2个条件:
1. 输出数据目的必须是流对象,OutputStream
,Writer
;
2. 必须调用println
,printf
,format
三个方法中的一个;
public static void function_3() throws FileNotFoundException {
FileOutputStream fos = new FileOutputStream("h:\\test\\5.txt");
PrintWriter pw = new PrintWriter(fos,true);
pw.println("i");
pw.println("guess");
pw.println("right");
pw.close();
}
1.7 打印流复制文本
- 读取数据源
BufferedReader
+File
读取文本行; - 写入数据目的
PrintWriter
+println
自动刷新;
public static void main(String[] args) throws IOException {
BufferedReader bfr=new BufferedReader(new FileReader("h:\\test\\a.txt"));
PrintWriter pw=new PrintWriter(new FileWriter("f:\\a.txt"),true);
String line =null;
while((line=bfr.readLine())!=null){
pw.println(line);
}
pw.close();
bfr.close();
}