天天看點

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

java庫的io分為輸入/輸出兩部分。

早期的java 1.0版本的輸入系統是inputstream及其子類,輸出系統是outputstream及其子類。

後來的java 1.1版本對io系統進行了重新設計。輸入系統是reader及其子類,輸出系統是writer及其子類。

java1.1之是以要重新設計,主要是為了添加國際化支援(即添加了對16位unicode碼的支援)。具體表現為java 1.0的io系統是位元組流,而java 1.1的io系統是字元流。

位元組流,就是資料流中最小的資料單元是8位的位元組。

字元流,就是資料流中最小的資料單元是16位的字元。

位元組流在操作的時候,不會用到緩沖;而字元流會用到緩沖。是以,字元流的效率會更高一些。

至于為什麼用到緩沖會效率更高一些呢?那是因為,緩沖本質上是一段記憶體區域;而檔案大多是存儲在硬碟或者nand flash上面。讀寫記憶體的速度比讀寫硬碟或nand flash上檔案的速度快很多!

目前,檔案大多以位元組的方式存儲的。是以在開發中,位元組流使用較為廣泛。

基本類對比表

java 1.0 io基本類(位元組流)

java 1.1 io基本類(字元流)

inputstream

reader

outputstream

writer

fileinputstream

filereader

fileoutputstream

filewriter

stringbufferinputstream

stringreader

stringwriter

bytearrayinputstream

chararrayreader

bytearrayoutputstream

chararraywriter

pipedinputstream

pipedreader

pipedoutputstream

pipedwriter

裝飾器對比表

java 1.0 io裝飾器(位元組流)

java 1.1 io裝飾器(字元流)

filterinputstream

filterreader

filteroutputstream

filterwriter(沒有子類的抽象類

bufferedinputstream

bufferedreader(也有 readline())

bufferedoutputstream

bufferedwriter

datainputstream

printstream

printwriter

linenumberinputstream

linenumberreader

streamtokenizer

pushbackinputstream

pushbackreader

以位元組為機關的輸入流的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

是以位元組為機關的輸出流的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

以位元組為機關的輸入流和輸出流關聯的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

以字元為機關的輸入流的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

以字元為機關的輸出流的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

以字元為機關的輸入流和輸出流關聯的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

位元組轉換為字元流的架構圖:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

位元組和字元的輸入流對應關系:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構

位元組和字元的輸出流對應關系:

Java筆記:IOJava 1.0和Java 1.1 的IO類的比較io架構