Java基礎整理之JavaIO
1. 以位元組為單位的輸入流的框架圖
下面,是以位元組為單位的輸入流的框架圖。
從中,我們可以看出。
(01) InputStream 是以位元組為單位的輸入流的超類。InputStream提供了read()介面從輸入流中讀取位元組資料。
(02) ByteArrayInputStream 是位元組陣列輸入流。它包含一個內部緩衝區,該緩衝區包含從流中讀取的位元組;通俗點說,它的內部緩衝區就是一個位元組陣列,而ByteArrayInputStream本質就是通過位元組陣列來實現的。
(03) PipedInputStream 是管道輸入流,它和PipedOutputStream一起使用,能實現多執行緒間的管道通訊。
(04) FilterInputStream
(05) DataInputStream 是資料輸入流。它是用來裝飾其它輸入流,它“允許應用程式以與機器無關方式從底層輸入流中讀取基本 Java 資料型別”。
(06) BufferedInputStream 是緩衝輸入流。它的作用是為另一個輸入流新增緩衝功能。
(07) File 是“檔案”和“目錄路徑名”的抽象表示形式。關於File,注意兩點:
a), File不僅僅只是表示檔案,它也可以表示目錄!
b), File雖然在io保重定義,但是它的超類是Object,而不是InputStream。
(08) FileDescriptor
(09) FileInputStream 是檔案輸入流。它通常用於對檔案進行讀取操作。
(10) ObjectInputStream 是物件輸入流。它和ObjectOutputStream一起,用來提供對“基本資料或物件”的持久儲存。
2. 以位元組為單位的輸出流的框架圖
下面,是以位元組為單位的輸出流的框架圖。
從中,我們可以看出。以位元組為單位的輸出流的公共父類是OutputStream。
(01) OutputStream 是以位元組為單位的輸出流的超類。OutputStream提供了write()介面從輸出流中讀取位元組資料。
(02) ByteArrayOutputStream
(03) PipedOutputStream 是管道輸出流,它和PipedInputStream一起使用,能實現多執行緒間的管道通訊。
(04) FilterOutputStream 是過濾輸出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超類。
(05) DataOutputStream 是資料輸出流。它是用來裝飾其它輸出流,它“允許應用程式以與機器無關方式向底層寫入基本 Java 資料型別”。
(06) BufferedOutputStream 是緩衝輸出流。它的作用是為另一個輸出流新增緩衝功能。
(07) PrintStream 是列印輸出流。它是用來裝飾其它輸出流,能為其他輸出流添加了功能,使它們能夠方便地列印各種資料值表示形式。
(08) FileOutputStream 是檔案輸出流。它通常用於向檔案進行寫入操作。
(09) ObjectOutputStream 是物件輸出流。它和ObjectInputStream一起,用來提供對“基本資料或物件”的持久儲存。
3. 以位元組為單位的輸入流和輸出流關聯的框架圖
輸入流和輸出流都有對應的關係,上面是將以位元組為單位的輸入流和輸出流關聯起來的圖片。
4. 以字元為單位的輸入流的框架圖
下面,是以字元為單位的輸入流的框架圖。
從中,我們可以看出。以字元為單位的輸入流的公共父類是Reader。
(01) Reader 是以字元為單位的輸入流的超類。它提供了read()介面來取字元資料。
(02) CharArrayReader 是字元陣列輸入流。它用於讀取字元陣列,它繼承於Reader。操作的資料是以字元為單位!
(03) PipedReader 是字元型別的管道輸入流。它和PipedWriter一起是可以通過管道進行執行緒間的通訊。在使用管道通訊時,必須將PipedWriter和PipedReader配套使用。
(04) FilterReader 是字元型別的過濾輸入流。
(05) BufferedReader 是字元緩衝輸入流。它的作用是為另一個輸入流新增緩衝功能。
(06) InputStreamReader 是位元組轉字元的輸入流。它是位元組流通向字元流的橋樑:它使用指定的charset 讀取位元組並將其解碼為字元。
(07) FileReader 是字元型別的檔案輸入流。它通常用於對檔案進行讀取操作。
5. 以字元為單位的輸出流的框架圖
下面,是以字元為單位的輸出流的框架圖。
(02) CharArrayWriter 是字元陣列輸出流。它用於讀取字元陣列,它繼承於Writer。操作的資料是以字元為單位!
(03) PipedWriter 是字元型別的管道輸出流。它和PipedReader一起是可以通過管道進行執行緒間的通訊。在使用管道通訊時,必須將PipedWriter和PipedWriter配套使用。
(04) FilterWriter 是字元型別的過濾輸出流。
(05) BufferedWriter 是字元緩衝輸出流。它的作用是為另一個輸出流新增緩衝功能。
(06) OutputStreamWriter 是位元組轉字元的輸出流。它是位元組流通向字元流的橋樑:它使用指定的 charset 將位元組轉換為字元並寫入。
(07) FileWriter 是字元型別的檔案輸出流。它通常用於對檔案進行讀取操作。
(08) PrintWriter 是字元型別的列印輸出流。它是用來裝飾其它輸出流,能為其他輸出流添加了功能,使它們能夠方便地列印各種資料值表示形式。
6. 以字元為單位的輸入流和輸出流關聯的框架圖
下面是將以字元為單位的輸入流和輸出流關聯起來的圖片。
7. 位元組轉換為字元流的框架圖
在java中,位元組流能轉換為字元流,下面是它們的轉換關係圖。
從中,我們可以看出。
(01) FileReader繼承於InputStreamReader,而InputStreamReader依賴於InputStream。具體表現在InputStreamReader的建構函式是以InputStream為引數。我們傳入InputStream,在InputStreamReader內部通過轉碼,將位元組轉換成字元。
(02) FileWriter繼承於OutputStreamWriter,而OutputStreamWriter依賴於OutputStream。具體表現在OutputStreamWriter的建構函式是以OutputStream為引數。我們傳入OutputStream,在OutputStreamWriter內部通過轉碼,將位元組轉換成字元。
8. 位元組和字元的輸入流對應關係
9. 位元組和字元的輸出流對應關係
本文借鑑於我的大學同學也是我的老師--張亮,謝謝!拿出來分享一波=3=