首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 緩衝流 (Buffered Stream) 完整指解:提升 IO 效率的關鍵

     編輯:Java 綜合教學

緩衝流核心作用

設置記憶體緩衝區 (預設 8KB),減少對磁碟的頻繁讀寫,大幅提升 IO 效率。

四大核心類別

1. BufferedInputStream - 緩衝位元組輸入流

  • 內部維護 8KB 位元組陣列
  • 用途:提高讀取檔案效率
  • 無獨立讀寫功能,需包裝 FileInputStream
File file = new File("D:\\a.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
int content;
while ((content = bis.read()) != -1) {
    System.out.print((char) content);
}
bis.close();

2. BufferedOutputStream - 緩衝位元組輸出流

  • 內部維護 8KB 位元組陣列
  • 資料先寫入緩衝區,滿或調用 flush()/close() 才寫入磁碟
FileOutputStream fos = new FileOutputStream("D:\\b.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("good good study day day up".getBytes());
bos.flush(); // 或 close() 會自動 flush
bos.close();

3. BufferedReader - 緩衝字符輸入流

  • 擴充方法:readLine() 一次讀取一行 (含換行符)
  • 效率遠高於逐字符讀取
FileReader fr = new FileReader("D:\\b.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
br.close();

4. BufferedWriter - 緩衝字符輸出流

  • 內部 8192 字符緩衝區
  • 擴充方法:newLine() 跨平台換行
FileWriter fw = new FileWriter("D:\\a.txt", true); // true = 附加模式
BufferedWriter bw = new BufferedWriter(fw);
bw.newLine();
bw.write("上課不要吃東西");
bw.close(); // 關閉前自動 flush

完整可執行範例

位元組緩衝流複製檔案

public class BufferedByteDemo {
    public static void main(String[] args) throws IOException {
        copyFile("D:\\source.txt", "D:\\target.txt");
    }
    public static void copyFile(String src, String dest) throws IOException {
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest))) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
        }
    }
}

字符緩衝流處理文本

public class BufferedCharDemo {
    public static void main(String[] args) throws IOException {
        writeLines();
        readLines();
    }
    static void writeLines() throws IOException {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\lines.txt"))) {
            bw.write("第一行"); bw.newLine();
            bw.write("第二行"); bw.newLine();
        }
    }
    static void readLines() throws IOException {
        try (BufferedReader br = new BufferedReader(new FileReader("D:\\lines.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved