2017-12-06 27 views
-1

この行がサーバー側の処理に関して正確に何を理解しているかわかりません。BufferedReaderとInputStreamReaderを理解する

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

私は他のS.Oスレッドを読んだが、私はまだトラブル、その行が何をするか、単に理解を持っています。

誰でもCコードに類推したいと思うなら、私はCに非常に自信があります。

+1

のJavaチュートリアルの[基本I/O](https://docs.oracle.com/javase/tutorial/essential/io/index.html)セクションをお試しください。 –

+0

私はこの質問が[これの複製](https://stackoverflow.com/q/10547362)であるかどうか分かりません。私は多分あなたとは少し異なる角度から来ているので、おそらくないと思います。それはあなたに役立つかもしれませんが、その質問に関するJon Skeetの優れた答えを読んでください。 (一般的に言って、Jon Skeetの回答を読んでおくと便利です)。 –

+0

@DawoodibnKareemよ、私のすべての質問に答えたよ!ありがとうございます<3 – bigfocalchord

答えて

-2

System.inが標準入力です。

InputStreamReaderを使用すると、指定した入力(この場合は標準入力)から読み込んだストリームを関連付けることができるようになりました。

BufferedReaderは、ストリームを操作するのに役立つ「抽象」です。たとえば、行全体を取得するために '\ n'が見つかるまで、文字単位で読むのではなく、readLineを実装します。この処理の後にStringを返すだけです。 Cでは

、そこには「文字列は」あなたは文字列を使用する必要がありませんが、あなたのような何かを標準入力から文字列へのデータを読み取ることができます。

char input[100]; 
... 
scanf("%99[^\n]", input); 

または

fgets (input, 100 , stdin) 
C++で

、あなたが使用したい:

using namespace std; 

string line; 
getline(cin, line); 

BufferedReaderの

文字、文字列、行の効率的な読み込みを実現するために、文字入力ストリームからテキストをバッファリングして読み込みます。バッファーサイズを指定することも、デフォルトサイズを使用することもできます。デフォルトはほとんどの場合十分です。一般に、リーダーからの各読み取り要求は、基礎となる文字またはバイトストリームの対応する読み取り要求を引き起こす。そのため、FileReadersやInputStreamReaderなどのread()操作が高価なReaderの周りにBufferedReaderをラップすることをお勧めします。

をBufferedReader#のreadLine()

テキストの行を読みます。行は、改行( '\ n')、復帰( '\ r')、改行の直後に続く改行のいずれかで終了すると見なされます。

InputStreamReaderのアンにInputStreamReaderはバイトストリームから文字ストリームへのブリッジです:それはバイトを読み込み、指定された文字セットを使用して文字に変換します。使用する文字セットは、名前で指定するか、明示的に指定するか、プラットフォームのデフォルトの文字セットを受け入れることができます。 InputStreamReaderのread()メソッドの1つを呼び出すたびに、基になるバイト入力ストリームから1つ以上のバイトが読み込まれる場合があります。バイトから文字への効率的な変換を可能にするために、現在の読取り操作を満足するのに必要なバイト数よりも多くのバイトを下位のストリームから先読みすることができる。

システムは、Systemクラスには有用なクラスフィールドおよびメソッドが含まれています。インスタンス化することはできません。

Systemクラスによって提供される機能の中には、標準入力、標準出力、およびエラー出力ストリームがあります。外部で定義された "プロパティ"へのアクセス。ファイルとライブラリをロードする手段。配列の一部をすばやくコピーするためのユーティリティメソッドなどがあります。

System.in

"標準" 入力ストリーム。このストリームはすでに開いており、入力データを供給する準備ができています。通常、このストリームは、キーボード入力またはホスト環境またはユーザーによって指定された別の入力ソースに対応します。

See

+2

この回答の多くは、Oracleの公開Javadocからコピーされているようです。もしあなたがあなたの出所を認めたなら、本当に良いでしょう。そうしないと、この剽窃を考慮する人もいます。 –

+2

'InputStreamReader'はストリームではありません。 'BufferedReader'は抽象ではありません。 – EJP

関連する問題