| 流類型 | 核心方法 | 語義 | 典型子類 |
| InputStream | read() / read(byte[]) | 從流讀取字節到程序 | FileInputStream, ByteArrayInputStream, Socket.getInputStream() |
| OutputStream | write(int) / write(byte[]) | 從程序寫入字節到流 | FileOutputStream, ByteArrayOutputStream, Socket.getOutputStream() |
裝飾者模式擴展功能
基礎流只處理字節,通過包裝器賦予高級能力:
// 緩衝提升性能
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt"));
// 數據類型轉換
DataInputStream dis = new DataInputStream(bis); // readInt(), readUTF()...
DataOutputStream dos = new DataOutputStream(bos); // writeInt(), writeUTF()...
// 對象序列化
ObjectInputStream ois = new ObjectInputStream(bis);
ObjectOutputStream oos = new ObjectOutputStream(bos);
字符流橋接
字節流 → 字符流:InputStreamReader / OutputStreamWriter (指定編碼)。
再包裝 BufferedReader / BufferedWriter 實現按行讀寫。
關鍵最佳實踐
- try-with-resources (JDK 7+) 自動關閉,防洩漏。
- 大文件用緩衝流 (8KB+),避免頻繁系統調用。
- 指定編碼 (UTF-8),杜絕平台默認編碼差異。
- 序列化類實現
Serializable,注意 serialVersionUID 維護。
- 網絡流注意「半包/粘包」,應用層協議定界 (長度首部/分隔符)。
總結
站在程序視角:Input = 讀 (read),Output = 寫 (write)。建立正確模型,IO 開發不再迷茫。
- 上一篇文章: JDBC 核心架構與實戰全解析:從驅動選型到事務控制
- 下一篇文章: Java 調用外部程式:Runtime.exec() 與 ProcessBuilder 實戰
Copyright ©
程式碼之家 All Rights Reserved