バッファーを確立する目的は、送信パフォーマンスを向上させ、データをより速く送信することです。
バッファは実際には非常にシンプルです。アレイを内部的にカプセル化し、配列を使用してデータを保存して、配列にアクセスする方法を提供します。
これらの方法の動作は、配列(角度マーカー)へのポインターです。
バッファの原理:ソースからバッファーまでのデータのバッチを取得し、バッファーから1つずつ取り出し、-1をエンドマークとして使用します。
BufferedReaderでは、データを読み取るためのread()およびreadline()メソッドがあります。
read()にはパラメーターchar []、cbuf、int off、int len。その返品値は-1です
readline()メソッドは、戻り値がnullである文字列コンテナストリングバッフダーのように、it lineの内側を線ごとに取ることです。
まず、クラスMyReader()およびMyReadLine()でデータを読み取るための2つの方法を定義するクラスを定義します。
パブリッククラス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 ++];カウント - ; Chを返します。 } public string myReadline()throws ioException {stringbuilder stb = new StringBuilder(); int ch = 0; while((ch = myread())!= -1){if(ch == '/r')継続; if(ch == '/n')return stb.toString(); stb.append((char)ch); } if(stb.length()!= 0)return stb.toString(); nullを返します。 } public void myclose()throws ioexception {fr.close(); }}その中で、ポインターZZとバッファカウンターカウントを定義して、バッファ内の読み取りデータの変更を記録します
count == 0の場合、バッファーzz 0にデータを読み取ります。最初の番号から読み取ります
データが0未満の場合、読み取り後に-1を返します。
MyReadLine()に文字列コンテナStringBuilderを作成して、データを保存します。 stb ==/nの場合、線が読み取られ、その戻り値はnullです。
カスタムBufferedReaderの上記の例は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。