前面學習了字節流,現在來學習一下字符流,字符流,看名字就知道是什麼意思了,是用來讀寫字符的流。
先來看一下:FileReader 和 FileWriter
直接上代碼
FileReader :
FileWriter:
FileReader 和 FileWriter主要是對文本文件進行操作,字符流操作文件好處是:可以自動的轉碼,讀取中文的時候不會亂碼。
PS:FileWriter寫換行符應該是、\r\n
下面來看一下BufferedReader 和 BufferedWriter
先看一下BufferedReader 的基本用法
再來看一下 BufferedWriter 的基本用法
其實 FileReader 和 FileWriter、 BufferedWriter 和 BufferedReader 相比,也即是多了個自身維護的緩衝數組,沒什麼多大的區別
BufferedReader 有一個方法,是很常用的,那就是readLine(); 顧名思義,一次讀取一行。
BufferedWriter 也有一個對應的方法,但不是writeLine(); 不要說出去有這個方法,會丟人的,與之相對應的就是 newLine(); 新建一行空行。
記住,reader和writer都是操作文本文件的,不能對二進制的文件進行操作,否則會出錯,下面演示一個錯誤的案例,錯誤的案例,錯誤的案例:
上面的是代碼,下面的是結果,結果目標文件路徑中確實有相對應的image2文件,外面看,大小還是一樣的,但你點詳細信息的時候你會發現,複製過來的這個文件的大小會比原來的要小一點,然後你可以試圖的去打開復制後的這個image2 你會發現,根本打不開,這就對了,這就是用字符流去操作二進制文件的後果,所以一定要記住,字符流只能操作文本文件,字符流出現的原因無非就是使我們操作文本文件的時候更加便捷,少了轉碼的那一步驟。
對IO方面還有什麼不明白的請移步到Java_IO
最後附上IO篇的目錄
FileInputStream和FileOutputStream的簡單使用
Java_IO_BufferedIntputStream_And_BufferedOutputStream
Java_IO_ObjectInputStream_And_ObjectOutputStream
Java_IO_SequenceInputStream文件的合併