在 Java 程式設計中,輸入輸出流是處理資料傳輸的基石。根據資料流向,可分為輸入流(讀取資料)和輸出流(寫入資料);根據處理單位,又可細分為位元組流與字元流。本文將深入剖析四大核心流類別的特性、構造方法及最佳實踐,助你靈活應對檔案操作與記憶體資料處理場景。
FileInputStream 繼承自 InputStream,專為讀取本地檔案的位元組資料而設計。因所有檔案本質上均以位元組儲存,故此類適用於任意類型檔案(圖片、視訊、文本等)的讀取操作。

常見實例化方式:
FileInputStream fis = new FileInputStream(new File("path/to/file"));

read(byte[] b) 方法從輸入流讀取最多 b.length 個位元組到位元組陣列,返回實際讀取的位元組數(-1 表示結束)。配合緩衝區可顯著提升大檔案讀取效能。
FileOutputStream 繼承自 OutputStream,支援指定不存在的檔案路徑(自動建立),但無法操作已被其他程式獨佔開啟的檔案。

FileOutputStream fos = new FileOutputStream(new File("target/path"));

fos.write("Hello World".getBytes()); // 字串轉位元組陣列寫入
注意:需手動呼叫 close() 釋放檔案鎖定,建議搭配 try-with-resources 語法自動管理資源。
繼承自 InputStream,內部維護一個位元組緩衝區與計數器,實現從記憶體陣列讀取資料,無需磁碟 I/O,極適合單元測試、資料轉換等高頻記憶體操作場景。


繼承自 OutputStream,資料寫入內部位元組陣列,緩衝區隨寫入量自動擴容。提供 toByteArray() 與 toString() 便捷獲取結果,常用於序列化、網路傳輸前的資料組裝。



掌握四大流類別的特性與協作模式,是構建高效 Java I/O 系統的關鍵基石。