从Stream中读取一行并立即返回

时间:2012-09-13 19:38:39

标签: java

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

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

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

1 个答案:

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