天天看点

使用高效缓冲流BufferedReader/BufferedWriter实现文件复制

好记性不如赖笔头……

package com.Ckinghan.ioDemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
 * @author Ckinghan
 *  @描述:使用高效缓冲流复制文件,只能复制字符型的文件,如视频之类的文件无法复制
 */
public class BufferedFileDemo {

    public static void main(String[] args) {
        /**
         * 使用高速缓冲流实现对文件的复制
         */
        bufferedCopyFile();
    }

    /**
     * @描述:使用高速缓冲流实现对文件的复制
     * @创建时间:
     */
    public static void bufferedCopyFile(){
        //创建fileReader/bufferedReader对象
        FileReader fileReader = null;
        BufferedReader bufferedReader = null;

        创建fileWriter/bufferedWriter对象
        FileWriter fileWriter = null;
        BufferedWriter bufferedWriter = null;

        try {
            //实例化fileReader/bufferedReader对象
            fileReader = new FileReader("src/com/Ckinghan/CollectionDemo/ParamsComparator.java");
            bufferedReader = new BufferedReader(fileReader);

            //实例化fileWriter/bufferedWriter对象
            fileWriter = new FileWriter("BufferedFileCopy.java");
            bufferedWriter = new BufferedWriter(fileWriter);

            //定义接收读取 的数据存储对象
            String string =null;

            //每次读取一行,如果读取的数据不为Null,
            while ((string = bufferedReader.readLine()) != null) {
                //在文件中写入一行接收到的数据
                bufferedWriter.write(string);
                //换行,因为读取的是一行,写入的也是一行,但并没有自动换行,换行须要手动
                bufferedWriter.newLine();
            }
            //清空缓冲区,将数据保存在文件中
            bufferedWriter.flush();
            //文件COPY成功,输出提示语
            System.out.println("使用bufferedReader/bufferedWriter复制文件成功");
        } catch (FileNotFoundException e) {
            //找不到文件异常输出
            e.printStackTrace();
        }catch (IOException e) {
            //IO操作异常输出
            e.printStackTrace();
        }finally {
            try {
                //如果bufferedWriter被实例化,关闭bufferedWriter对象,会自动关闭fileWriter对象
                if(bufferedWriter != null)
                    bufferedWriter.close();
                //如果bufferedReader被实例化,关闭bufferedReader对象,会自动关闭fileReader对象
                if(bufferedReader != null)
                    bufferedReader.close();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
        }

    }

}