java-IO操作——使用带有缓冲的字符流读写数据

使用BufferedReader和PrintWriter实现文件拷贝

package Test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

public class RWByBufferedCharStream {

    public static void main(String[] args) {
        try {
            FileInputStream fis=new FileInputStream("test.txt");
            InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
            FileOutputStream fos=new FileOutputStream("test_new.txt");
            OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");


            BufferedReader br=new BufferedReader(isr);
//          BufferedWriter bw=new BufferedWriter(osw);
            //为了保留换行符我们使用PrintWriter,PrintWriter和BufferedWriter非常相似
            PrintWriter pw=new PrintWriter(osw,true);
            String input;
            while((input=br.readLine())!=null){
//              bw.write(input);
                pw.println(input);
            }

//          bw.close();
            //在把输出流关掉之前使用flush()将当前的所有缓冲区的数据强制输出,保证数据一定是完整的
            //但是使用PrintWriter的时候,可以使用一个布尔类型的参数,把他指定为true,
            //这样在调用println()和printf的时候,当前缓冲区的内容就会被强制输出
            //但是使用Buffer的时候就没有这个,在流关闭之前一定要调用flush()方法把缓冲区的内容墙纸刷出,以免丢失
//          pw.flush();
            pw.close();
            br.close();
            isr.close();
            fis.close();
            osw.close();
            fos.close();

            System.out.println("done");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}


你可能感兴趣的:(java笔记)