先說說區分:
位元組流按位元組讀寫,字元流按字元讀寫。位元組流屬於全能流,可以讀取任意形式的二進位製流。字元流只能讀取字元文字此類。
比較好區分的方法:
以stream結尾的相關流類都是位元組流,以reader、writer結尾的都是字元流。字元流使用緩衝區作為中介幫助讀寫流檔案。好處顯而易見,多了乙個緩衝區。不夠好的地方就是不顯示flush、close的話可能導致本次操作白給。
fileoutputstream.write(new string("hello dabai").getbytes());如上位元組流即便不手動close 內容也能寫入。
filewriter.write("hello dabai");上述字元流如果不手動flush的話那就白給了。
一般情況下,可以認為位元組流更好,因為用的比較多,使用場景也更常見。
流的分類:
inputstream是所有位元組輸入流的祖先,outputstream是所有位元組輸出流的祖先,都是抽象類,都實現了closeable介面,其中outputstream還實現了flushable介面。
protected object lock;該屬性在建構函式中指向當前類this,在writer中write方法使用synchronized加了鎖
在reader中則是提供了乙個抽象方法交給子類實現
inputstream、outputstream都用於處理二進位制資料,即處理位元組。但實際上處理字元的情況也不少,所以有了字元流,它是按照jvm的encode來處理的,進行字符集的轉化。二者可以通過inputstreamreader和outputstreamwriter關聯,這兩個類分別繼承自reader、writer。建構函式都需要乙個位元組流物件,inputstreamreader類中包含乙個屬性streamdecoder,outputstreamwriter類中包含乙個屬性streamencoder,這類屬性也是實際完成read、write、close以及flush的物件。這類屬性同樣屬於reader、writer的子類,但是他們對stream進行對應的字元編碼並進行字元形式的輸入輸出。
位元組流與字元流
位元組流 輸入位元組流 inputstream 所有輸入位元組流的基類,是抽象類 fileinputstream 讀取檔案資料的輸入位元組流 bufferedinputstream 緩衝輸入位元組流,該類可以提高讀取檔案資料的效率 輸出位元組流 outputstream 所有輸出位元組流的基類,是抽...
位元組流與字元流
1.在位元組流中輸出資料主要是使用outputstream完成,輸入使的是inputstream,在字元流中輸出主要是使用writer類完成,輸入流主要使用reader類完成。這四個都是抽象類 2.inputstream 和outputstream,兩個是為位元組流設計的,主要用來處理位元組或二進位...
位元組流與字元流
位元組流與字元流的操作的本質區別只有乙個 位元組流是原生的操作,而字元流是經過處理後的操作。在進行網路資料傳輸 磁碟資料儲存所儲存的支援資料型別只有 位元組,所以磁碟中的資料必須先讀取到記憶體後才可以操作,記憶體可以可以幫助我們把位元組變成字元。字元更加適合操作中文。位元組流 inputstream...