1。バッファレッドクラス
。クラスライブラリ:
java.lang.object
java.io.reader
java.io.BufferedReader
。基本概念:
Public Class BufferedReaderはリーダーを拡張します
文字入力ストリームからテキストを読んで、個々の文字をバッファするため、文字、配列、行を効率的に読み取ります。バッファのサイズを指定するか、デフォルトのサイズを使用できます。ほとんどの場合、デフォルト値は十分に大きいです。
通常、読者によって作成された各読み取りリクエストは、基礎となる文字またはバイトストリームの対応する読み取り要求になります。したがって、BufferedReaderを使用して、読み取り()操作が高価になる可能性があるすべての読者を包むことをお勧めします。
BufferedReaderストリームは、テキスト行を読み取ることができ、BufferedReaderにリーダーオブジェクトを渡すことにより、BufferedReaderオブジェクトを作成できます。これは、FileReaderがテキスト行の読み取り機能を提供しないためです。
。デモ:
BufferedReaderを介して入力されたステートメントをキャプチャします。
Import Java.io。 System.out.print( "スペースを含むことができる一連のテキストを入力してください:"); string text = bufferedreader.readline(); system.out.println( "テキストを入力してください:"+テキスト); }}
注釈:
IOExceptionスロー例をスローします
inputStreamReaderは、バイトフローと文字フローの間のブリッジです
2。inuptStreamReaderクラス
inputStreamReaderは、バイトストリームを文字ストリームに変換します。バイトフローとキャラクターフローの間の橋です。文字セットエンコーディングが指定されていない場合、デコードプロセスは、GBKなどのプラットフォームのデフォルト文字エンコードを使用します。
建設方法:
inputStreamReader ISR = new inputStreamReader(inputStream in); //デフォルトのエンコードセットでinputStreamReaderクラスを作成します
inputStreamReader ISR = new inputStreamReader(inputStream in、string charsetname); //指定されたエンコードセットを作成します
inputStreamReaderクラス。
オブジェクト内のパラメーターは、inputstream in = system.in ;.によって取得されます。 //キーボードのデータを読み取ります。
またはinputStream in = new FileInputStream(String Filename); //ファイル内のデータを読み取ります。 FileInputStreamは、inputStreamのサブクラスであることがわかります。
主な方法:int read(); //単一の文字を読み取ります。
int read(char [] cbuf); //読み取り文字を配列に保存します。読み取られた文字の数を返します。
。デモ:
Import java.io。 */// byte stream // inputstream in = system.in; //キーボード入力を読み取ります。 inputstream in = new fileinputStream( "d://demo.txt"); //ファイルデータを読み取ります。 //流れるバイトの文字ストリームへの変換。バイトから文字への効果的な変換を有効にするために、//基礎となるストリームのバイトを事前に読むことができます。 inputStreamReader ISR = new inputStreamReader(in); // read // 1つの文を包括的に読み取ります。 // inputStreamReader ISR = new inputStreamReader(// new FileInputStream( "d://demo.txt")); char [] cha = new char [1024]; int len = isr.read(cha); System.out.println(new String(Cha、0、Len)); isr.close(); } public static void transreadbybuf()スローIOException { /***バッファーを使用して、バッファオブジェクトのreadLine()メソッドを使用します。 *// read byte stream // inputstream in = system.in; //キーボードのデータを読み取りinputstream in = new fileinputStream( "d://demo.txt"); //ファイルのデータを読み取ります。 //流れるバイトの文字ストリームへの変換。 inputStreamReader ISR = new inputStreamReader(in); // read //文字ストリームバッファーリーダーbuff = new bufferedReader(ISR); // buffered // bufferedreader bufr = new bufferedReader(// new inputstreamReader(new fileinputStream(new fileinputStream); 1つの文に結合することができます。 /*int ch = 0; ch = bufr.read(); System.out.println((char)ch); */文字列線; while((line = bufr.readline())!= null){system.out.println(line); } isr.close(); }}3。inputStreamReaderとBufferedReaderの実際のケース(コード化されていないセット)
Import Java.io。文字列読み取り; bufread = new BufferedReader(new inputStreamReader(resourcehelper .getResourceInputStream( "pinyin.txt"))); while((read = bufread.readline())!= null){system.out.println(read); } bufread.close(); } catch(filenotfoundexception ex){ex.printstacktrace(); } catch(ioException ex){ex.printstacktrace(); }}}注:pinyin.txtはプロジェクトのルートディレクトリに配置されています
java.io.bufferedinputStream; Import java.io.fileinputStream; Import java.io.filenotfoundexception; class resourcehelper { / ** * @return * @return * / static bufferedinputStream getResourcutStream(String resurcenput){String rution Bufferedtream fileInputStream(ResourceName)); } catch(filenotfoundexception e){// dodo auto-enerated catch block e.printstacktrace(); } nullを返します。 }}要約:
inputStreamReaderクラス
それはバイトの流れと文字の流れの間の橋であり、内部の入力ストリームを囲みます。キャラクターをより高いレベルで1つずつ1つずつ読み取り、テキスト形式で入力/出力を、エンコード形式を指定できます。
BufferedReaderクラス
BufferedReaderはリーダークラスによって拡張され、一般的なバッファーテキストの読み取り値を提供し、テキスト行を読み取り、文字入力ストリームからのテキストの読み取り、各文字をバッファリングする非常に実用的な読み取りラインを提供します。
PS:inputstream、inputstreamReader、およびリーダーの関係
inputStream:結果はバイト入力ストリームです。 inputstream.read( "filename")の後、結果はバイトストリームになります。
リーダー:キャラクターストリームを読む
inputStreamReader:バイトから文字までのブリッジ。 inputStreamReader(inputstream.read( "filename"));
reader.read(inputstreamreader(inputstream in));バイトからキャラクターに変更し、印刷および表示できます。
java.io.readerおよびjava.io.inputstreamは、Java入力クラスを形成します。
リーダーは、16ビット文字、つまりUnicodeエンコード文字を読むために使用されます。 inputStreamは、ASCII文字とバイナリデータを読み取るために使用されます。
リーダーは16ビットのユニコード文字出力をサポートし、inputstreamは8ビット文字出力をサポートします。
リーダーとinputstreamは、それぞれI/Oライブラリによって提供される並列および独立レベルのメカニズムの2つのセットです。 1byte = 8bits inputstreamとoutputstreamは8ビットストリームの処理に使用され、リーダーとライターは16ビットストリームの処理に使用されます。
Java言語では、バイトタイプは8ビットで、Charタイプは16ビットなので、中国語を処理するときはリーダーとライターを使用する必要があります。
これら2つのレベルのメカニズムの下では、Bridge inuptStreamReaderとOutputStreamWriterもあり、これは読者への入力ストリームの適応とOutputStreamのライターへの適応を担当することに注意する価値があります。
Javaでは、さまざまなデータソースに対応するさまざまなタイプのリーダー入力ストリームがあります。
FileReaderは、ファイルからの入力に使用されます。 CharArrayReaderは、プログラムの文字配列から入力するために使用されます。 StringReaderは、プログラム内の文字列から入力するために使用されます。 PipedReaderは、別のスレッドのPipedWriterからパイプラインに書かれたデータを読み取るために使用されます。
また、さまざまなデータソースに対応する入力ストリーム入力ストリームには、FileInputStream、bytearrayinputStream、StringBufferinputStream、PipedInputStreamなどのさまざまな種類の種類があります。
さらに、対応するリーダータイプを持たない入力ストリーム入力ストリームが2つあります。ソケットはソケットに使用されます。 URLConnectionはURL接続に使用されます。これらの2つのクラスは、getInputStream()を使用してデータを読み取ります。
それに対応して、java.io.writerとjava.io.outputStreamには同様の違いがあります。
inputstream.read(byte [] b)およびinputstream.read(byte [] b、int off、int len)の両方の方法を使用して、ストリームから複数のバイトを読み取るために使用されます。経験豊富なプログラマーは、これらの2つの方法が読みたいバイト数を読み取ることができないことが多いことに気付くでしょう。たとえば、最初の方法では、プログラマーはプログラムがB.Lengthバイトを読み取ることができることを望んでいますが、実際の状況は、システムがそれほど多く読み取ることができないことです。 Java API命令を慎重に読んだ後、この方法では非常に多くのバイトを読み取ることができることを保証するものではなく、非常に多くのバイトを読み取ることができることを保証することしかできません(少なくとも1)。したがって、プログラムをカウントバイトを読み取らせる場合は、次のコードを使用することをお勧めします。
byte [] b = new byte [count]; int readcount = 0; //(readcount <count){readcount += in.read(bytes、readcount、count -count -count -count); }このコードは、IO例外がデータストリームの中央または終了で発生しない限り、カウントバイトが読み取られるようにすることができます(eofexception)