一:IO流的分類(組織架構)
- 根據處理數據類型的不同分為:字節流和字符流
- 根據數據流向不同分為:輸入流和輸出流
這么龐大的體系里面,常用的就那么幾個,我們把它們抽取出來,如下圖:
二:字符字節,輸入輸出流的概念
字符流和字節流
字符流的由來: 因為數據編碼的不同,而有了對字符進行高效操作的流對象。本質其實就是基於字節流讀取時,去查了指定的碼表。 字節流和字符流的區別:
- 讀寫單位不同:字節流以字節(8bit)為單位,字符流以字符為單位,根據碼表映射字符,一次可能讀多個字節。
- 處理對象不同:字節流能處理所有類型的數據(如圖片、avi等),而字符流只能處理字符類型的數據。
結論:只要是處理純文本數據,就優先考慮使用字符流。 除此之外都使用字節流。
輸入流和輸出流
對輸入流只能進行讀操作,對輸出流只能進行寫操作,程序中需要根據待傳輸數據的不同特性而使用不同的流。
三;字節流
1:輸入字節流InputStreamIO --->FileInputStream
2:輸出字節流OutputStream --->FileOutputStream
四:字符流
1:字符輸入流Reader --->FileReader
2:字符輸出流Writer --->FileWriter
五:字節流字符流之間的轉換
1: InputStreamReader是字節流同向字符流的橋梁,如果不指定字符編碼,該解碼過程將使用系統默認的字符編碼: 如GBK:
2:OutputStream用於將寫入的字符編碼成字節后寫入一個字節流。
六:緩沖流
緩沖流也稱為處理流,對文件或者其他目標頻繁的操作,效率低,性能差。緩沖流目的是提高程序讀取和寫出的性能。緩沖流也分為字節緩沖流和字符緩沖流。
使用緩沖流的好處是能夠更高效的讀寫信息,原理是先將數據緩沖起來,然后一起寫入或者讀取出來。
1:緩沖字節輸入流BufferedInputStream
2:緩存字節輸出流BufferOutputStream
3:緩沖字符輸入流 BufferedReader
4:緩沖字符輸出流 BufferWriter