JavaでInputStream.available()
は何をしますか?ドキュメントを読みましたが、まだ理解できません。
文書によると:
この入力ストリームのメソッドの次の呼び出し元によってブロックされることなく、この入力ストリームから読み取ることができる(またはスキップできる)バイト数を返します。次の呼び出し元は、同じスレッドまたは別のスレッドである可能性があります。
クラスInputStreamで使用可能なメソッドは常に0を返します。
blockingとはどういう意味ですか?それは単に同期呼び出しを意味しますか?
そして何よりも、available()
メソッドの目的は何ですか?
InputStreamsでは、read()
呼び出しは「ブロック」メソッド呼び出しと呼ばれます。つまり、メソッド呼び出し時にデータが利用できない場合、メソッドはデータが利用可能になるまで待機します。
available()
メソッドは、read()
呼び出しがプログラムの実行フローをブロックするまで読み取ることができるバイト数を示します。ほとんどの入力ストリームでは、read()
へのすべての呼び出しがブロックされているため、availableはデフォルトで0を返します。
ただし、一部のストリーム(BufferedInputStream
など、内部バッファがある)では、一部のバイトが読み取られてメモリに保持されるため、プログラムフローをブロックせずに読み取ることができます。この場合、available()
メソッドは、バッファに保持されているバイト数を示します。