0

我应该使用哪种方法(以及哪个类)从给定的 InputStream 读取一行,如果没有要读取的行,或者实际上在任何情况下,立即返回?

为清楚起见,我想知道哪个类提供了从 InputStream 读取一行并立即返回的方法 - 例如,如果没有要读取的行,则不要阻塞。

例如,据我所知, BufferedReader.readLine() 确实会阻塞。

4

1 回答 1

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 并不能保证下一次读取将阻塞。

于 2012-09-13T19:50:29.653 回答