Java IO 是程序與外部世界(文件、網絡、控制台、內存)交換數據的橋樑。掌握其流的概念、分類體系、核心類繼承關係,是高效處理文件上傳下載、網絡通信、數據序列化的基石。
Java 中輸入輸出操作以流方式進行。流是 Java 內存中一組有序數據序列。
輸入流:數據從源(文件、內存、網絡、控制台)→ 讀入內存
輸出流:數據從內存 → 寫往目的地(文件、內存、網絡、控制台)
參照對象永遠是 Java 程序(內存)。
| 分類維度 | 兩大類別 | 核心差異 | 典型類 |
|---|---|---|---|
| 按數據流向 | 輸入流 / 輸出流 | 數據流向相對程序 | InputStream/Reader vs OutputStream/Writer |
| 按處理單位 | 字節流 / 字符流 | 字節流:1 byte=8bit;字符流:1 char=2 byte=16bit(含編碼轉換) | XxxInputStream vs XxxReader |
| 按功能角色 | 節點流 / 處理流(包裝流) | 節點流直連源頭;處理流包裝節點流增強功能(緩衝、轉換、對象序列化等) | FileInputStream vs BufferedInputStream |

InputStream、OutputStreamFileInputStream、FileOutputStreamBufferedInputStream、BufferedOutputStream(掛載數組緩衝,大幅提升性能)DataInputStream、DataOutputStream(按基本類型讀寫)ObjectInputStream、ObjectOutputStream(持久化對象圖)InputStreamReader、OutputStreamWriter(字節↔字符橋樑,指定編碼)ByteArrayInputStream、ByteArrayOutputStreamPrintStream、PrintWriter(含 format/printf)Reader、WriterFileReader、FileWriterBufferedReader(神級 readLine())、BufferedWriterInputStreamReader、OutputStreamWriterCharArrayReader、CharArrayWriter、StringReader、StringWriterPrintWriterObjectOutputStream/InputStream,實現 Serializable 接口。InputStreamReader/OutputStreamWriter 顯式指定 charset(UTF-8/GBK)。下一篇將深入實戰:FileInputStream/FileOutputStream 文件讀寫、圖片複製、緩衝流性能對比、轉換流編碼處理、序列化流對象持久化。敬請期待!