.字符流(字符流 = 字節流 + 解碼)
1.字符流:讀二進制文件,會自動解碼成我們看的 懂的字符
2.Reader:抽象類,所有字符輸入流的超類。
1.FileReader:文件字符輸入流,讀取字符串
2.用法:
1.找到目標文件
File file = new File(“C:\\Users\\cdlx2016\\Desktop\\a.txt);
2.建立數據的通道
FileReader reader = new FileReader(file);
3.建立一個緩沖區
char[] c = new char[1024];
4.讀取數據
int content = 0;
while((content = fileReader.read(c)) != -1){
System.out.print(new String(c,0,content));
}
5.關閉資源
reader.clock();
3.Write:抽象類,所有字符輸出流的超類。
1.FileWrite:文件數據的輸出字符流
2.使用注意點:
1.內部維護一個1024個字符的字符數組,寫入數據時,是先將數據寫到內部字符數組中,如果需要將數據寫入硬盤,需要調用flush()或者close()或字符數組滿了。
2.如果需要向文件追加數據,使用new FileWrite(File,boolean)構造方法,boolean為true。
3.如果指定文件不存在,會自己創建一個。
3.用法:
1.找到目標文件
File file = new File(“C:\\Users\\cdlx2016\\Desktop\\a.txt);
2.建立數據的通道
FileWrite write = new FileWrite(file);
3.寫入數據
write.write(“”);//這里只會寫入內部維護的數組
4.刷新數據 (刷新、關閉、數組滿了 才會寫入磁盤(邊讀邊寫))
write.flush();
5.關閉資源 (默認會調用flush())
write.close();
4.字符流解碼:拿到系統默認的編碼方式來解碼。(GBK)
5.將圖片中的二進制數據和GBK碼表中的值進行對比,對比的時候會出現二進制文件在碼表中找不到對應的值,他會將二進制數據標記為未知字符,當我在寫入數據時后台將未知的字符丟掉。
6.字節流使用場景:讀寫數據不需要轉為能夠看懂的內容時。Eg:圖片、視頻、音頻……
7.字符流使用場景:讀寫字符數據,一般就是文本文檔。