6

有没有办法让BufferedReader.readLine()不挂?

我正在创建一个服务器:

  • 检查客户端是否传递了任何输入。
  • 如果不是,它会执行其他代码并最终循环回检查客户端的输入。

如何检查客户端是否在未运行的情况下传递了任何输入readLine()?如果我运行readLine(),线程将挂起直到输入被传递?

4

1 回答 1

8

您可以使用BufferedReader.ready(),如下所示:

BufferedReader b = new BufferedReader(); //Initialize your BufferedReader in the way you have been doing before, not like this.

if(b.ready()){
    String input = b.readLine();
}

ready()true如果输入源没有将任何内容放入尚未读取的流中,则将返回。

编辑:只是一个注释,true即使只有一个字符存在,ready 也会返回。您可以使用read()来检查是否有换行符或回车符,它们将指示行尾。

欲了解更多信息:http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#ready()

于 2013-03-19T21:30:56.263 回答