字節流(InputStream/OutputStream)直接操作文件,無緩衝區;字符流(Reader/Writer)引入緩衝區(內存區域),數據先寫入緩衝區,關閉或調用 flush() 才寫入文件。
FileOutputStream out = new FileOutputStream("test.txt");
out.write("Hello World!!!".getBytes());
// out.close(); // 文件已有內容

FileWriter writer = new FileWriter("test.txt");
writer.write("Hello World!!!");
// writer.close(); // 文件為空

writer.write("Hello World!!!");
writer.flush(); // 文件立即有內容

緩衝區是一段內存區域,用於暫存數據,減少頻繁訪問磁盤/網絡,提升性能。字符流操作時所有字符在內存形成,輸出前暫存於緩衝區。
InputStreamReader/OutputStreamWriter 實現字節流與字符流轉換,核心涉及 byte[] 與 String 的編碼/解碼,需指定字符集避免亂碼。InputStream、OutputStreamReader、WriterBufferedInputStream、PipedInputStream 等提升性能與便利性。