位元組流與字元流

2021-09-25 21:50:07 字數 2750 閱讀 9699

位元組流與字元流的操作的本質區別只有乙個:位元組流是原生的操作,而字元流是經過處理後的操作。 在進行網路資料傳輸、磁碟資料儲存所儲存的支援資料型別只有:位元組,所以磁碟中的資料必須先讀取到記憶體後才可以操作,記憶體可以可以幫助我們把位元組變成字元。字元更加適合操作中文。

位元組流:inputstream 、outputstream

字元流:reader、writer;

不管使用的是位元組流還是字元流,其基本的操作流程幾乎是固定的,以檔案操作為例

1、要根據檔案路徑建立file類物件

2、根據位元組流或字元流的子類例項化父類物件;

3、進行我們資料的讀取或寫入操作;

4、關閉流(close() 必須關閉)

對於io操作屬於資源處理,所有的資源處理操作的最後必須要進行關閉,如果你在專案裡面沒有執行關閉,那麼這種關閉就再也執行不了,除非關閉整個專案。(網路資源,資料庫資源都必須關閉)

位元組輸出流:outputstream

outputstream類實現啦closeable、flushable兩個介面

closeable:public void close() throws ioexception;

flushable:public void flush() throws ioexception; //flush 清空

在outputstream類裡面實際上還定義有其他方法:

public void write(byte b) throws ioexception

outputstream是乙個抽象類,需要子類例項化父類物件,方法都被父類已經定義好了,我們只關注子類的構造方法

//根據索引部分輸出

public void write(byte b, int off, int len) throws ioexception

public class test01 

//2、outputstream是乙個抽象類,所以需要子類例項化,意味著只能進行檔案處理

outputstream out=new fileoutputstream(file);

//3、進行檔案輸出處理操作

string msg="www.google.com\r\n"; //要輸出的檔案內容 /r/n換行操作

//將內容變成位元組陣列

out.write(msg.getbytes());

//部分輸出,輸出前三個

out.write(msg.getbytes(), 0, 3);

//4、關閉流close()

out.close();}}

inputstream:

//讀取資料到位元組陣列裡,返回資料讀取個數

public int read(byte b) throws ioexception

---返回值:如果陣列長度大於資料長度,則返回讀取資料長度

如果資料長度大於陣列長度,則返回陣列長度

如果沒有資料啦,還繼續讀取資料,則返回-1

//讀取部分資料到位元組陣列中

public int read(byte b, int off, int len) throws ioexception

---返回值:

每次只讀取傳遞陣列的部內容,如果讀取滿啦則返回陣列長度,如果沒有讀取滿,就是讀取資料的個數,如果讀取最後沒有資料返回-1;

//讀取單個位元組

public abstract int read () throws ioexception

---返回值:

每次讀取乙個位元組內容,讀取沒有資料,返回-1;

public class testinnputstream }}

字元輸出流:

writer抽象類,子類例項化父類物件

public class testwriter 

string str="世界和平";

writer writer=new filewriter(file,true);

writer.write(str); //直接輸入字串

writer.close();}}

字元輸入流

reader抽象類。

在reader類裡面不會定義有乙個方法可以直接讀取資料為字串。

public class testreader }}

位元組流與字元流的區別:

在我們實際開發中,我們優先考慮位元組流,只有在處理中文的時候才使用到字元流,因為字元流會使用到記憶體緩衝

轉換流:

outputstreamwriter:將位元組輸出流變成字元輸出流;

inputstreamreader:  將位元組輸入流轉變成字元輸入流

public class testoutputstreamwrider 

outputstream out=new fileoutputstream(file);

outputstreamwriter outwriter=new outputstreamwriter(out);

outwriter.write("轉角愛哈哈個");

位元組流與字元流

位元組流 輸入位元組流 inputstream 所有輸入位元組流的基類,是抽象類 fileinputstream 讀取檔案資料的輸入位元組流 bufferedinputstream 緩衝輸入位元組流,該類可以提高讀取檔案資料的效率 輸出位元組流 outputstream 所有輸出位元組流的基類,是抽...

位元組流與字元流

1.在位元組流中輸出資料主要是使用outputstream完成,輸入使的是inputstream,在字元流中輸出主要是使用writer類完成,輸入流主要使用reader類完成。這四個都是抽象類 2.inputstream 和outputstream,兩個是為位元組流設計的,主要用來處理位元組或二進位...

位元組流與字元流

inputstream 位元組輸入流 public int read byte b,int off,int len outputstream 位元組輸出流 public void write byte b,int off,int len fileoutputstream public void wr...