首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java IO 核心類別繼承體系深度解析

     編輯:Java 程式設計入門

Java IO 體系概覽

Java IO 操作的核心在於「流」的概念,所有 IO 類別主要分為兩大家族:字節流(以 InputStream/OutputStream 為根)與 字符流(以 Reader/Writer 為根)。理解其繼承結構,是掌握高效 IO 開發的基石。

字符流體系(處理文本數據)

輸入端:Reader 及其子類

  • Reader:抽象基類,定義字符輸入的基本契約。
  • BufferedReader:裝飾者模式典範,提供緩衝區大幅提升讀取效率,並支援 readLine() 按行讀取。
  • LineNumberReader:繼承 BufferedReader,自動維護行號計數器。
  • InputStreamReader:橋梁角色,將字節流按指定編碼解碼為字符流,是跨越二進制與文本世界的關鍵。
  • FileReader:InputStreamReader 的便利子類,默認使用平台編碼讀取文件。
  • StringReader:從字符串讀取字符流,常用於測試或內存操作。

輸出端:Writer 及其子類

  • Writer:抽象基類,定義字符輸出契約。
  • BufferedWriter:提供緩衝寫入,含 newLine() 跨平台換行。
  • OutputStreamWriter:反向橋梁,將字符按編碼編碼為字節流輸出。
  • FileWriter:OutputStreamWriter 便利子類,默認編碼寫入文件。
  • StringWriter:向內存字符串緩衝區寫入,最終可 toString() 獲取結果。
  • PrintWriter:功能最豐富的字符輸出類,支援格式化打印(printf)、自動刷新、不拋出 IOException(需自行 checkError())。

字節流體系(處理二進制數據)

輸入端:InputStream 及其子類

  • InputStream:抽象基類,定義 read() 等核心方法。
  • FileInputStream:從文件系統讀取字節,最常用的源頭流。
  • ByteArrayInputStream:內存源頭,構造時需傳入 byte[] 作為數據源,無系統資源佔用,無需關閉。
  • SequenceInputStream:合併流,將多個 InputStream 串聯為單一流順序讀取。

輸出端:OutputStream 及其子類

  • OutputStream:抽象基類,定義 write() 核心方法。
  • FileOutputStream:向文件系統寫入字節,最常用的目的地流。
  • ByteArrayOutputStream:內存目的地,內部維護可擴展的 byte[] 緩衝區,調用 toByteArray() 獲取結果,同樣無系統資源佔用。

設計模式與最佳實踐

Java IO 大量採用 裝飾者模式:基礎流(如 FileInputStream)負責接入物理設備,處理流(如 BufferedInputStream、DataInputStream)負責增強功能。開發時應遵循「先接物理設備,再套裝飾器」的鏈式構建原則。

關鍵橋梁 InputStreamReader/OutputStreamWriter 讓字節與字符世界互通,**務必顯式指定編碼**(如 StandardCharsets.UTF_8),避免平台默認編碼導致的亂碼與可移植性問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved