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

Java IO 類體系深度解析:從字節流到字符流的演進

     編輯:Java 相關知識

Java IO 類體系概覽

在 JDK API 中,基礎的 IO 類位於 java.io 包,而新實現的 IO 類則分佈在以 java.nio 開頭的包中。本文將重點介紹 java.io 包中的類體系結構。

流的方向與分類

流具有方向性,根據流的方向可劃分為兩大類:

  • 輸入流:將外部數據源的數據轉換為流,程序通過讀取流中的數據完成數據讀入。
  • 輸出流:將流中的數據轉換到對應的數據源,程序通過向流中寫入數據完成數據寫入。

字節流與字符流

由於 JDK 歷史原因,java.io 實現了兩類流:

  • 字節流:以 byte 為基本單位,從 JDK 1.0 開始引入。
  • 字符流:以 char 為基本單位(兩個字節),從 JDK 1.1 開始引入,效率較字節流略高。

字符流的類結構基本與字節流一一對應,學習時可先從字節流入手。

四大核心抽象類

Sun 為每個系列設計了父類,具體操作類作為子類實現:

1. 字節輸入流 InputStream

所有字節輸入流的父類,定義了統一的讀取方法,簡化編程難度。常見方法:

  • available():返回未讀取的字節數(不可靠)
  • close():關閉流並釋放資源
  • markSupported()、mark()、reset():標記與重讀機制
  • read() 系列:核心讀取方法,阻塞式讀取單個字節、字節數組或指定長度
  • skip():跳過指定字節數

2. 字節輸出流 OutputStream

所有字節輸出流的父類,採用緩衝區機制。常見方法:

  • close():關閉流
  • flush():強制輸出緩衝數據
  • write() 系列:核心寫入方法,支持單字節、字節數組、部分數組寫入

3. 字符輸入流 Reader

字節輸入流的升級版,讀取單位為 char,效率更高。新增方法:

  • read(CharBuffer):讀入字符緩衝區
  • ready():判斷流是否準備好可讀取

4. 字符輸出流 Writer

字節輸出流的升級版,寫入單位為 char。新增方法:

  • append() 系列:向流末尾追加字符/字符序列
  • write(String) 系列:直接寫入字符串或其片段

實體流與裝飾流

根據是否直接連接數據源,IO 類可分為:

  • 實體流:直接連接數據源(如 FileInputStream)
  • 裝飾流:建立在其他流基礎上,提供額外功能(如 BufferedInputStream)

實際使用時應根據流類型選擇合適的處理方式。

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