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