1. 程式人生 > >Java IO流的層次結構

Java IO流的層次結構

1.位元組I/O流結構
(1)InputStream的結構
位元組輸入流

InputStream是一個抽象父類,不可以直接使用,我們使用的是它的子類:
1. ByteArrayInputStream 從byte[]陣列中以位元組的方式讀取
2. FileInputStream 從檔案中以位元組為單位讀取
3. FilterInputStream 用來封裝其他輸入流
	1. BufferInputStream 開闢內部位元組緩衝陣列,對輸入流進行快取,返回一個位元組陣列
	2. DataInputStream 用來裝飾其它輸入流,它允許應用程式以與機器無關方式從底層輸入流中讀取基本的Java資料型別,然後使用DataOutputStream寫出資料
4. ObjectInputStream 從輸入流中讀取序列化後的資料,並進行反序列化
5. PipedInputStream 從管道中讀取資料

(2)OutputStream的結構

OutputStream是一個abstract class
1. ByteArrayOutputStream 以位元組為單位將資料寫入到位元組陣列中
2. FileOutputStream 從檔案中以位元組的方式讀取以位元組為單位將資料寫入到檔案中
3. FilterOutputStream 用來封裝其他輸出流,併為其提供功能
1. ZipOutputStream 以位元組為單位 向zip檔案中寫入資料
2. PrintStream 裝飾其他輸出流,可以很方便的打印出各種資料格式的資料
3. DataOutputStream 允許程式寫入與機器無關的Java資料型別
4. BufferedOutputStream 寫緩衝流
4. ObjectOutputStream 物件序列化,並且用來寫出序列化後的資料
5. PipedOutputStream 管道輸出流

  1. 字元流 I/O結構
    Reader同樣是一個 抽象父類
    1. InputStreamReader 是位元組流和字元流之間的橋樑,轉換器
    2. FileReader 以字元為單位讀取文字檔案
    3. BufferedReader 一次從流中讀取8K的資料放到記憶體中大小可以自己設定,這樣的好處是減少位元組流IO操作的時間,IO操作最費時間
    4. CharArrayReader 用來讀取字元陣列和ByteArrayInputStream類似

Writer就不在贅述
下面是InputStream位元組輸入流和InputStreamReader之間的關係,由此我們可以看到,InputStreamReader是繼承自InpUtStream Cahrset Reader的,我們可以設定資料的編碼格式

(3)基於磁碟的I/O
File類
(4)基於網路的I/O
Socket …