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