Java IO 設計初衷
Java IO 系統旨在實現文件、控制台、網絡設備等 IO 設備的通信。早期 Java 1.0 僅提供字節流(如 FileInputStream/FileOutputStream),Java 1.1 為支援國際化引入字符流(基於 Unicode),雙流體系並存至今。
核心概念
什麼是流?
流是對數據傳輸的抽象,本質是數據的有序序列,支持輸入/輸出操作。
分類維度
- 按流向:輸入流(讀取)、輸出流(寫入)
- 按處理單位:字節流(1 Byte = 8 bits,有符號)、字符流(2 Bytes = 16 bits,無符號)
字節流體系架構
輸入流體系

- InputStream:字節輸入流超類,提供
read() 方法
- FileInputStream:文件讀取常用類
- BufferedInputStream:緩衝輸入流,提升讀取效能
- DataInputStream:數據輸入流,支持基本類型讀取
- ObjectInputStream:對象輸入流,配合 ObjectOutputStream 實現序列化
- PipedInputStream:管道輸入流,支援線程間通信
輸出流體系

- OutputStream:字節輸出流超類,提供
write() 方法
- FileOutputStream:文件寫入常用類
- BufferedOutputStream:緩衝輸出流
- PrintStream:打印流,提供格式化輸出
- DataOutputStream:數據輸出流
- ObjectOutputStream:對象輸出流
字節流關聯圖

字符流體系架構
輸入流體系


- Reader:字符輸入流超類
- FileReader:字符文件讀取
- BufferedReader:緩衝字符讀取,支持
readLine()
- InputStreamReader:字節轉字符橋梁,指定 charset 解碼
輸出流體系
- Writer:字符輸出流超類
- FileWriter:字符文件寫入
- BufferedWriter:緩衝字符寫入
- OutputStreamWriter:字節轉字符橋梁,指定 charset 編碼
- PrintWriter:打印字符流
字符流關聯圖

字節流與字符流轉換機制

- FileReader → InputStreamReader → InputStream:構造函數鏈傳遞 InputStream,內部解碼
- FileWriter → OutputStreamWriter → OutputStream:構造函數鏈傳遞 OutputStream,內部編碼
對應關係總結


掌握整體架構後,可針對具類深入學習其用法、源碼實現等進階內容。