我应该使用哪种方法(以及哪个类)从给定的InputStream中读取一行,以防万一没有要读取的行,或者实际上在任何情况下都会立即返回?
为清楚起见,我想知道哪个类提供了一个从InputStream读取一行的方法,并返回Immedgiatly - 例如,如果没有要读取的行,则不要阻塞。
例如,就我所知,BufferedReader.readLine()确实会阻塞。
答案 0 :(得分:1)
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并不能保证下一次读取将被阻止。