你怎么能让BufferedReader.readLine()不挂?

时间:2013-03-19 21:30:56

标签: java bufferedreader

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

我正在创建一个服务器:

  • 检查客户是否已提供任何输入。
  • 如果没有,它会执行其他代码并最终循环回检查客户端的输入。

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

1 个答案:

答案 0 :(得分: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。您可以使用read()检查是否有换行符或回车符,这些将表示行尾。

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