例は次のとおりです。
パッケージDay0208; Import java.io.filereader; Import java.io.ioexception; /**バッファーリーダー機能を実装するカスタム読み取りバッファー*分析:*バッファーは、配列をカプセル化し、配列にアクセスするためのより多くの方法を提供することです*実際には、これらの方法は最終的にバッファリングの原則を操作します。バッファ*ソース内のデータが抽出されたら、-1をエンドマークとして使用します。 */public class mybufferreader {private fileReader r; myBufferReader(fileReader R){this.r = r; } //アレイをバッファープライベートchar [] buf = new char [1024]として定義します。 //この配列の要素を操作するポインターを定義します。最後の要素が操作されると、ポインターはゼロprivate int pos = 0にリセットする必要があります。 //バッファ内のデータの数を記録するためにカウンターを定義します。データが0に減少したら、ソースからバッファーへのデータを取得し続けます。 private int count = 0; public int myread()throws ioexception {//カスタム読み取りメソッドif(count == 0){//バッファにデータがない場合は、ソースからバッファーカウント= r.read(buf)にデータのバッチを取得します。 pos = 0; } if(count <0){return -1; } char ch = buf [pos ++]; //バッファから1つの文字を取得します。 Chを返します。 } public string myReadline()throws ioException {// custom readlineはlaw stringbuilder sb = new StringBuilder()に違反します; int ch = 0; while((ch = myread())!= -1){//データがある限り、read(ch == '/n')// javaラインの破損、読み取りを停止し、読み取りデータ出力を返してsb.tostring()を返します。 if(ch == '/r')継続; // windowlineの下のnewlineは、読み取りまたはラインブレイクをしないで、次の文字sb.append((char)ch); //通常の状況では、読み続けて、読み続けてください} if(sb.length()!= 0)//ドキュメントに文字がある場合、sb.tostring(); null; //空のドキュメントの場合、空に戻ります} public void myclose()throws ioexception {r.close(); // close flow Resources}}}これは大丈夫で、テストを実行できます
パッケージDay0208; Import java.io.filereader; Import java.io.ioexception;パブリッククラスmydemo {public static void main(string [] args)throws ioexception {filereader fw = new fileReader( "c://demo2.txt"); myBufferReader br = new MyBufferReader(FW);文字列line1 = null; while((line1 = br.myreadline())!= null){system.out.println(line1); } // Int num = 0; // }}両方の検出方法は問題ありません。
上記の記事は、カスタムBufferedReaderの読み取りおよびReadlineメソッドに基づいています。これは私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。