位元組流、字元流繼承關係
前幾篇文章講解了位元組流、字元流的使用,不過Java提供給使用者的流類遠不止此,限於篇幅原因,沒辦法一一講解,而且也沒有必要一一講解,就像我在寫部落格的時候多次提到的,有問題的時候學會查JDK API即可。OK,雖然不一一講解每種流,我自己簡單畫了幾張UML圖,說明一下位元組輸入流、位元組輸出流、字元輸入流、字元輸出流這四個流類的子類繼承關係。
1、位元組輸入流
2、位元組輸出流
3、字元輸入流
4、字元輸出流
總結一下流類的使用
1、File是一些檔案/資料夾操作的源頭,File代表的就是檔案/資料夾本身,因此無論如何,使用IO的第一步是建議開發者根據路徑例項化出一個File
2、考慮使用字元流還是位元組流。操作文字一般使用字元流,即Reader和Writer;操作位元組檔案使用位元組流,即InputStream和OutputStream
3、選擇使用輸入流還是輸出流。把內容從檔案讀入Java記憶體使用輸入流,即Reader和InputStream;把內容從Java記憶體讀到檔案使用輸出流,即Writer和OutputStream
4、使用字元流使用BufferedReader和BufferedWriter,它們的建構函式中的引數分別是Reader和Writer,因此既可以例項化出FileReader和FileWriter,也可以例項化出InputStreamReader和OutputStreamWriter,作為建構函式的引數傳入BufferedReader和BufferedWriter
5、FileInputStream和FileOutputStream可以直接操作檔案的讀寫,它們沒有做快取
6、ObjectOutputStream和ObjectInputStream,它們分別以OutputStream和InputStream作為建構函式的引數,因此可以例項化出FileOutputStream和FileInputStream並傳入
另外,請知,IO是Java的23種設計模式中的裝飾器模式的典型應用,這在講解設計模式的時候會專門講到。