緩衝區的建立目的就是增加傳輸性能,使我們傳輸數據更加快速
緩衝區的內部其實很簡單就是在內部封裝了一個數組用數組來存儲數據對外提供一些方法對數組進行訪問
其中這些方法的操作就是對數組的指針(角標)。
緩衝區的原理:從源中獲取一批數據到緩衝區,再從緩衝區中一個一個取出取完後用-1作為結束標記
在BufferedReader中我們讀取數據方法有read() ,readLine()
read() 其參數為char[],cbuf,int off,int len。其返回值為-1
readLine()方法是一行一行的取其內部就像是一個字符串容器StringBuffder 其返回值為null;
首先定義一個類在類中定義兩個讀取數據的方法MyReader(),MyReadLine();
public class MyBufferedReader { private FileReader fr; private char[] buff = new char[1024]; private int zz = 0; private int count = 0; MyBufferedReader(FileReader fr){ this.fr = fr; } public int MyRead() throws IOException{ if(count==0){ count = fr.read(buff); zz =0; } if(count<0) return -1; char ch = buff[zz++]; count--; return ch; } public String MyReadLine() throws IOException{ StringBuilder stb = new StringBuilder(); int ch = 0; while((ch=MyRead())!=-1){ if(ch=='/r') continue; if(ch=='/n') return stb.toString(); stb.append((char)ch); } if(stb.length()!=0) return stb.toString(); return null; } public void MyClose() throws IOException{ fr.close(); }}裡面我定義了指針zz 和一個緩衝區計數器count來記錄緩衝區內讀取數據的變化
當count==0時就往緩衝區內讀入數據zz為0 從第一個數開始讀
小於0時數據讀取完畢返回-1
在MyReadLine()中創建一個字符串容器StringBuilder 來存儲數據黨stb==/n時一行讀取完畢其返回值為null;
以上這篇自定義BufferedReader的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。