Java 的輸入輸出操作全部建立在「流」的抽象之上。為了提升讀寫效率,實際開發中幾乎總是搭配緩衝流使用。無論是處理配置文件、日誌記錄,還是批量數據遷移,掌握 BufferedReader 與 BufferedWriter 的正確用法都是基本功。
下面展示一個完整的示例,將 1.txt 的內容逐行讀取並寫入 2.txt,並妥善處理資源關閉與異常捕獲:
import java.io.*;
public class ReadWriteFile {
public static void main(String[] args) {
File source = new File("c:\\1.txt");
File target = new File("c:\\2.txt");
try (BufferedReader br = new BufferedReader(new FileReader(source));
BufferedWriter bw = new BufferedWriter(new FileWriter(target))) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine(); // 跨平台換行,優於硬編碼 "\r\n"
}
} catch (FileNotFoundException e) {
System.err.println("找不到指定文件:" + e.getMessage());
} catch (IOException e) {
System.err.println("讀寫過程發生錯誤:" + e.getMessage());
}
}
}
AutoCloseable 的資源,避免手動 close() 遺漏導致洩漏。bw.newLine() 而非硬編碼 "\r\n",確保在 Windows、Linux、macOS 上行尾符號正確。FileNotFoundException(文件不存在)與 IOException(其他 IO 錯誤),便於精準排查。若處理大文件,可考慮調大緩衝區大小(如 new BufferedReader(new FileReader(file), 64 * 1024)),或直接使用 NIO.2 的 Files.copy() 實現零拷貝,進一步提升吞吐量。