Java IO 流庫滿足基本需求:可透過主控台、檔案、記憶體區塊甚至網際網路(第 15 章)讀寫。可繼承 InputStream/OutputStream 建立新輸入輸出物件型別。向預期字串的方法傳物件時,Java 限制「自動型別轉換」會自動呼叫 toString(),可重新定義擴展流能接納的物件種類。
File 物件先判斷存在性,否則 FileOutputStream/FileWriter 直接覆蓋。File 類別設計缺陷暴露:「單一類別別做太多事」!IO 流庫易混淆概念。確能做很多事且可移植,但若未吃透裝飾器模式,設計皆帶盲目性。學習與教學都須花功夫。且不完整:無輸出格式化支援,幾乎所有語言 IO 包皆有此功能(Java 1.1 未糾正,錯失改良良機,反增特殊情況提高複雜度)。Java 1.1 仍沿用舊 IO 庫而非新庫,庫設計者未明確標示棄用與首選特性,造成頻繁棄用警告。
一旦掌握裝飾器模式並在靈活環境使用,便能認識此設計優點。到時為此多付出的代碼行不至讓你太生氣。