IO流
一、IO流簡介
01.流的概念和作用
流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的的總稱或抽象。即數據在兩設備之間的傳輸稱爲流,流的本質是數據傳輸,根據數據傳輸特性將流抽象爲各種類,方便更直觀的進行數據操作。
02.Io流的分類
根據處理數據類型的不同分爲:字符流和字節流
字符流的由來:因爲數據編碼的不同,而有了對字符進行高效操作的對象。本質其實就是基於字節流讀取時,去查了指定的碼錶。
字節流和字符流的區別:
1) 讀寫單位不同:字節流以字節(8bit)爲單位,字符流以字符爲單位,根據碼錶映射字符,一次可能讀多個字節。
2) 處理對象不同:字節流 處理所有類型的數據(如圖片、avi等),而字符流只能處理字符類型的數據
3) 字節流:一次讀入或讀出是8爲二進制
4) 字符流:一次讀入或讀出是16位二進制
設備上的數據無論是圖片或者視屏,文字,它們都是以二進制存儲的。二進制的最終都是以一個8爲爲數據單元進行體現,所以計算機中最小的數據單元就是字節。意味着,字節流可以處理設備上的所又數據,所以字節流一樣可以處理字符數據。
結論:只要是處理純文本數據,就優先考慮使用字符流。除此之外都使用字節流
根具數據流向不同分爲:輸入流和輸出流。
輸入流只能進行讀操作,輸出流只能進行寫操作,程序中需要根據傳輸數據的不同特性而使用不同的流。
二、使用File操作文本文件
Java文件類以抽象的方式代表文件名和目錄路徑名。該類主要用於文件和目錄的創建、文件的查找和文件的刪除等。
三、讀寫文本文件
01.字節輸入流InputStream
02.字符輸入流Reader
03.字符緩存流BufferedReader
BufferedReader類是Reader類一個子類,它與FileReader類的區別在於,BufferedReader類帶有緩存區,它可以先把一批數據讀到緩存區,接下來的讀取操作都是從緩存中讀取數據,避免每次都從數據源讀取數據進行字符編碼轉換,從而提高讀取操作的效率。
04.字節輸出流OutputStream
05.字符輸出流Writer
06.字符緩存區BufferedWriter
四、進制文件的讀寫
DataInputStream是FileInputStream的子類,繼承與DataInput
DataOutputStream是FileOutputStream的子類,繼承與DataOutput
01.讀寫.class文件
五、序列化與反序列化
01.ObjectOutputStream
02.ObjectInputStream