BufferedReader
BufferedReaderは、バッファリングされた文字入力ストリームです。読者から継承します。
BufferedReaderの目的は、他の文字入力ストリームにバッファリング機能を追加することです。
BufferReaderを作成するときは、コンストラクターを介して読者をパラメーターとして指定します。 BufferReaderは、バッチでリーダーのデータを読み取り、その一部がバッファーに読み込まれます。データのこの部分をバッファー内で操作した後、データの次の部分は読者から読み取られます。
なぜバッファリングが必要なのですか?その理由は非常にシンプルで効率的な問題です!バッファ内のデータは実際にはメモリに保存されますが、生データはハードディスクまたはナンドフラッシュに保存される場合があります。メモリからのデータの読み取りは、ハードディスクからデータを読むよりも少なくとも10倍高速であることがわかっています。
それでは、一度にすべてのデータをバッファーに読んでみませんか?まず、すべてのデータを読むのに長い時間がかかる場合があります。第二に、メモリ価格は非常に高く、容量はハードドライブほど大きくありません。
例:
java.io.bufferedreader; Import java.io.io.bytearrayinputStream; Import java.io.file; Import java.io.inputStream; Import java.io.filereader; Import java.io.ioexception; import java.io.io.fileenotfoundexception; import java.lang.secuturesecution;静的最終int len = 5; public static void main(string [] args){testbufferedreader(); } / ** * BufferedReader API TEST FUNCTION * / private static void testBufferedReader(){// BufferedReader文字ストリームを作成します。 BufferedReader in = new BufferedReader(new FileReader(file)); //文字ストリームから5文字を読み取ります。 (int i = 0; i <len; i ++){//次の文字を読み続けることができる場合は、(in.ready()){//「文字ストリームの次の文字」int tmp = in.read(); System.out.printf( "%d:%c/n"、i、tmp); }} //「この文字ストリーム」がマーキング関数をサポートしていない場合、(!in.marksupported()){system.out.println( "support not supported!");戻る ; } //「現在のインデックス位置」、つまり、6番目の位置の要素をマークします - "f" // 1024はmarklimit in.mark(1024)に対応します。 // 22文字をスキップします。 in.skip(22); // 5文字を読むchar [] buf = new char [len]; in.read(buf、0、len); System.out.printf( "buf =%s/n"、string.valueof(buf)); // line system.out.printfの残りのデータを読み取ります( "readline =%s/n"、in.readline()); //「入力ストリームのインデックス」をMark()によってマークされた位置にリセットします。つまり、「F」にリセットされます。 in.reset(); //「文字ストリーム」からBUFに5文字を読み取ります。つまり、「fghij」in.read(buf、0、len)を読みます。 System.out.printf( "buf =%s/n"、string.valueof(buf)); in.close(); } catch(filenotfoundexception e){e.printstacktrace(); } catch(securityexception e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }}} BufferedReader.txtのコンテンツは、プログラムで読み取られます。
abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz
実行結果:
0:A1:B2:C3:D4:EBUF = 01234READLINE = 56789BUF = FGHIJ
bufferedwriter
BufferedWriterは、バッファリングされた文字出力ストリームです。それは作家から継承します。
BufferedWriterの目的は、他の文字出力ストリームにバッファリング機能を追加することです。
BufferedWriterは、文字配列を介してデータをバッファします。バッファがいっぱいになったり、ユーザーがFlush()関数を呼び出すと、バッファーのデータを出力ストリームに書き込みます。
例:
java.io.bufferedwriter; Import java.io.file; Import java.io.outputStream; Import java.io.filewriter; Import java.io.ioexception; import java.io.fileenotfoundexception; Import java.lang.securityexception; java.util.util.canner cantil.cantil.cantil.cantil.canner; len = 5; //英語の手紙に対応する「abcdefghijklmnopqrstuvwxyz」プライベート静的最終char [] arrayletters = new char [] {'a'、 'b'、 'c' ''、 'd'、 'e'、 'f'、 'g' '、' h '、' j '、' k '、' l '、' m '、' n '、' o '、' p '、' q '、' r '、' s '、' t '、' u '' '' public static void main(string [] args){testbufferedwriter(); } / *** bufferedwriter api test function* / private static void testbufferedwriter(){//「ファイル出力ストリーム」に対応するバッファーライターを作成します//対応するバッファーサイズは16、つまりバッファデータ> = 16の場合、バッファーのコンテンツは出力ストリームに自動的に書き込まれます。 try {file file = new file( "bufferwriter.txt"); bufferedwriter out = new BufferedWriter(new filewriter(file)); // arrayletters配列の最初の10文字を出力ストリームに書き込みます。 //出力ストリームに「ラインブレーク/n」を書き込みます。 out.flush(); // readuserinput(); out.close(); } catch(filenotfoundexception e){e.printstacktrace(); } catch(securityexception e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }} / ***ユーザー入力の読み取り* / private static void readuserinput(){system.out.println( "テキストを入力してください:");スキャナーreader = new scanner(system.in); //入力文字列str = reader.next()を待ちます。 System.out.printf( "入力は:%s/n"、str); }}実行結果:ファイル「bufferwriter.txt」が生成され、ファイルのコンテンツは「abcdefghij」です。