天天看點

使用高效緩沖流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();
            }
        }

    }

}