1. 程式人生 > >java IO流之三 使用緩衝流來讀寫檔案

java IO流之三 使用緩衝流來讀寫檔案

一、通過BufferedReader和BufferedWriter來讀寫檔案

     使用緩衝流的好處是,能夠更高效的讀寫資訊,原理是將資料先緩衝起來,然後一起寫入或者讀取出來。經常使用的是readLine()方法,表示一次讀取一行資料。

package org.example.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TestBufferedWriter {

    public static void main(String[] args) throws Exception {
        write();
        read();
    }

    /**
     * DOC 讀取資訊.
     * 
     * @throws FileNotFoundException
     * @throws IOException
     */
    private static void read() throws FileNotFoundException, IOException {
        File file = new File("E:\\a.txt");// 指定要讀取的檔案
        // 獲得該檔案的緩衝輸入流
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        String line = "";// 用來儲存每次讀取一行的內容
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        bufferedReader.close();// 關閉輸入流
    }

    /**
     * DOC 寫入資訊.
     * 
     * @throws IOException
     */
    private static void write() throws IOException {
        File file = new File("E:\\a.txt");// 指定要寫入的檔案
        if (!file.exists()) {// 如果檔案不存在則建立
            file.createNewFile();
        }
        // 獲取該檔案的緩衝輸出流
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
        // 寫入資訊
        bufferedWriter.write("你好世界");
        bufferedWriter.newLine();// 表示換行
        bufferedWriter.write("hello world");
        bufferedWriter.flush();// 清空緩衝區
        bufferedWriter.close();// 關閉輸出流
    }

}

二、使用BufferedInputStream和BufferedOuputStream讀寫圖片

使用方式和FileInputStrem和FileOutputStream基本一致:

package org.example.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestBufferedString {

    public static void main(String[] args) throws Exception {
        // 指定要讀取檔案的緩衝輸入位元組流
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("F:\\test.jpg"));
        File file = new File("E:\\test.jpg");
        if (file != null) {
            file.createNewFile();
        }
        // 指定要寫入檔案的緩衝輸出位元組流
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
        byte[] bb = new byte[1024];// 用來儲存每次讀取到的位元組陣列
        int n;// 每次讀取到的位元組陣列的長度
        while ((n = in.read(bb)) != -1) {
            out.write(bb, 0, n);// 寫入到輸出流
        }
        out.close();// 關閉流
        in.close();
    }

}