PrintWriter和PrintStream用法

简介

PrintWriter和PrintStream是两个打印流,当我们需要对数据进行输出时,一般用的会比较多。比如说Socket通信,数据通过Socket流入流出,在流出的时候可能会用到PrintWriter。在选择这两个流的时候,如果需要对字符操作用PrintWriter,字节操作则用PrintStream。

使用

PrintWriter和PrintStream用法_第1张图片

当我们用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!

你可能感兴趣的:(IO流)