Java檔案IO操作中常用的流處理類的基本資訊和相關操作我們已經全部了解過,現在讓我們來通過輸出操作的複習總結概況位元組流和字元流之間的差別吧。
【本節目标】
通過閱讀本節内容,你将了解到OutputStream和Writer之間的不同,認識到輸出過程中的緩沖區的存在,并能夠通過對緩沖取得一些操作實作一些需求,深刻了解字元流和位元組流适用于不同的使用場景。
位元組流與字元流的差別
現在通過一系列的分析已經可以清楚位元組流與字元流的基本操作了,但是對于這兩類流依然是存在有差別的,重點來分析一下輸出的處理操作。在使用OutputStream和Writer輸出的最後都使用了close()方法進行了關閉處理。
在使用OutputStream類輸出的時候,如果沒有使用close()方法關閉輸出流會發現内容依然可以實作正常的輸出;但是如果在使用Writer的時候沒有使用close()方法關閉輸出流,那麼這個時候内容将無法進行輸出,因為Writer使用到了緩沖區,當使用close()方法的時候實際上會出現有強制重新整理緩沖區的情況,是以這個時候會将内容進行輸出,如果沒有關閉,那麼将無法進行輸出操作,是以此時如果在不關閉的情況下想将全部的内容進行輸出可以使用flush()方法強制性清空。
範例:使用Writer并強制性清空
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:"+ File.separator + "hello" + File.separator + "mldn.txt");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs(); //父目錄必須存在
}
Writer out = new FileWriter(file);
String str = "www.mldn.cn";
out.write(str);
out.flush();//強制性重新整理 www.mldn.cn
}
}
位元組流在進行處理的時候并不會使用到緩沖區,而字元流會使用到緩沖區,另外使用緩沖區的字元流更加适合進行中文資料的處理,是以在日後的開發中如果要涉及到包含有中文資訊的輸出,一般都會使用字元流進行處理,但是從另外一方面來講,位元組流和字元流的基本處理形式是相似的,由于IO很多情況下都是進行資料的傳輸使用(二進制),是以我們的重點将以位元組流為主。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:借助轉換流打通位元組/字元流的關聯 | 帶你學《Java語言進階特性》之五十八 更多Java面向對象程式設計文章檢視此處