简介
PrintWriter和PrintStream是两个打印流,当我们需要对数据进行输出时,一般用的会比较多。比如说Socket通信,数据通过Socket流入流出,在流出的时候可能会用到PrintWriter。在选择这两个流的时候,如果需要对字符操作用PrintWriter,字节操作则用PrintStream。
使用
当我们用PrintWriter时,需要指定文件名,或者自定义一个字节输出流或字符输出流。
通过PrintStream改变System.out.Println()的输出方向
System.setOut(new PrintStream(new FileOutputStream("print.txt")));
System.out.println("哈哈哈啊哈");
System.setOut()可以改变我们的输出方向,加上 PrintStream可以指定输出位置,当我们输出的时候,“哈哈哈啊哈”不会在控制台显示,直接输入到print.txt文件中。
PrintStream实现文件的拷贝
package Print;
import java.io.*;
public class PrintStream_Copy {
public static void main(String[] args) throws IOException {
File file=new File("16流");
BufferedInputStream br=new BufferedInputStream(new FileInputStream(file));
PrintStream ps=new PrintStream(new FileOutputStream("src\\"+file.getName()),true);//true表示自动刷新
int temp=0;
while ((temp=br.read())!=-1){
ps.print((char) temp);
}
br.close();
ps.close();
System.out.println("拷贝成功!");
}
}
文件拷贝成功,但文件夹里面的中文字符会乱码。原因我们之前提到过,请看: FileOutputStream写入中文字符后,然后用FileInputStream一个个读取,出现的乱码问题
PrintWriter实现文件的拷贝
package Print;
import java.io.*;
public class PrintWriter_Copy {
public static void main(String[] args) throws IOException {
File file=new File("16流");
BufferedReader br=new BufferedReader(new FileReader(file));
PrintWriter pw=new PrintWriter(new FileWriter("src\\"+file.getName()),true);//为true:println,printf或format方法将刷新输出缓冲区
String temp=null;
while ((temp=br.readLine())!=null){
pw.println(temp); //每次将一行数据输入到目标位置,并且 刷新流
// pw.write(temp); //不换行 连在一起
}
br.close();
pw.close();
System.out.println("Copy成功!");
}
}
总结:
对于这两个打印流而言,个人感觉PrintWriter用的会比较多。当然用的时候还是的根据需求来。
每日鸡汤: 没有压力的生活,并不是所谓的享福,而是慢性折磨。
Over!