特定のInputStreamから行を読み取るためにどのメソッド(およびどのクラス)を使用する必要がありますか?読み取る行がない場合、または実際にはどのような場合でも、すぐに返されますか?
明確にするために、InputStreamから行を読み取り、Immedgiatlyを返すメソッドを提供するクラスを知りたいです。たとえば、読み取る行がない場合はブロックしないでください。
たとえば、BufferedReader.readLine()は、私が知る限りブロックします。
特定のInputStreamから行を読み取るためにどのメソッド(およびどのクラス)を使用する必要がありますか?読み取る行がない場合、または実際にはどのような場合でも、すぐに返されますか?
明確にするために、InputStreamから行を読み取り、Immedgiatlyを返すメソッドを提供するクラスを知りたいです。たとえば、読み取る行がない場合はブロックしないでください。
たとえば、BufferedReader.readLine()は、私が知る限りブロックします。
public final String pollLine(final BufferedReader reader)
throws IOException {
/* pick a reasonable look ahead */
reader.mark(512);
while (reader.ready()) {
final int ch = reader.read();
if (ch == -1
|| Character.getType(ch) == Character.LINE_SEPARATOR) {
reader.reset();
return reader.readLine();
}
}
reader.reset();
return null;
}
エラーが発生した場合は申し訳ありませんが、携帯電話の小さなタッチスクリーン キーボードでこの応答を入力しました。
質問に答えるために、クエリReader.ready
を実行して、ブロックせずに安全に読み取ることができるかどうかを判断できます。
戻り値:
次の read() が入力をブロックしないことが保証されている場合は true、それ以外の場合は false。false を返すことは、次の読み取りがブロックされることを保証しないことに注意してください。