關於位元組流,字元流,轉換流的詳解

2021-09-25 07:39:28 字數 2169 閱讀 2145

1. 流的分類

無論是位元組流還是字元流,操作流程幾乎一樣

1.取得終端物件

2.根據終端物件取得輸入輸出流

3.根據輸入輸出流進行資料讀取與寫入

4.關閉流

io操作屬於資源處理,所有的資源操作在使用後一定要關閉

3. 位元組輸出流

位元組輸出流有三個核心輸出方法:

將指定的位元組陣列全部輸出

public void write(byte[ ] b) throws ioexception;

將部分位元組陣列輸出

public void write(byte[ ] b,int offset, int len) throws ioexception

輸出單個位元組

public abstract void write(int b) throws ioexception;

在io操作這裡,要想使用某個終端,這個終端一定有乙個類實現了outputstream這個類(outputstream是抽象類)。

檔案內容覆蓋

public fileoutputstream(file file) throws filenotfoundexception

看乙個例子:

public

class

io1catch

(ioexception e)

}//2.取得終端物件的輸出流

trycatch

(filenotfoundexception e)

catch

(ioexception e)

finally}}

}

4.位元組輸入流輸入方法 read :

a. 讀取資料到位元組陣列b中

public int read(byte[ ] b) throws ioexception

返回值三種情況(喝稀飯,開始稀飯多,勺子一勺只能喝一勺的量,後來只剩下不足一勺子的量,再後來吃完了):

返回b的長度 : 當讀取的資料大小 > 位元組陣列大小,返回位元組陣列大小

返回乙個大於0的數,但是小於b長度 : 讀取資料大小 < 位元組陣列大小,返回真正讀取個數

返回 -1 :資料讀取完畢

b. public int read( ) throws ioexception:讀取單個位元組

栗子:

public

class

io1catch

(filenotfoundexception e)

catch

(ioexception e)

}}

5.字元流字元輸出流writer-適用於處理中文文字

除了引數為字元陣列外,多了乙個傳入string物件的方法

可以直接支援字串的輸出

public void write (string str) throws ioexception

字元流若為關閉,資料在緩衝區存放,不會輸出目標終端。要想將資料輸出,要麼將輸出流關閉,要麼使用flush強制重新整理緩衝區。

public

class

io1}

字元輸入流reader

reader類中沒有方法可以直接讀取字串,只能通過字元陣列來讀取

public int read(char cbuf) throws ioexception

public

class

io1}

6 轉換流:位元組流 -> 字元流轉換流用於將底層的位元組流轉為字元流供子類使用,單向操作

outputstreamwriter : 位元組輸出流 -> 字元輸出流

inputstreamreader : 位元組輸入流 -> 字元輸入流

字元流的具體子類大都是通過轉換流將位元組流轉為字元流的(filewriter繼承轉換流)

Java位元組流,字元流,轉換流

一 位元組流 a.可以用來操作文字,還可以操作,音訊等 例題 使用位元組的輸出輸入流進行檔案的複製 public class demo 方法2.使用位元組陣列的方法讀寫 read byteb 從此輸入流中將最多 b.length 個位元組的資料讀入乙個 byte 陣列中。byte b new byt...

字元流 位元組流 轉換流簡介

子類字首代表功能 字尾是其父類 字元流 reader write 字元流底層還是位元組流實現 字元流讀取檔案 filewrite fileread fr.read 1判斷是否讀到檔案最後 字元緩衝流 bufferedwrite,bw.newline 寫時緩衝區換行,跨平台,bufferedwrite...

Java中位元組流 字元流 轉換流

主要位元組流 fileoutputstream 檔案輸出流 fileinputstream 檔案輸入流 案例 需求 複製檔案public static void fun catch filenotfoundexception e catch ioexception e finally catch i...