有没有办法让BufferedReader.readLine()
不挂?
我正在创建一个服务器:
- 检查客户端是否传递了任何输入。
- 如果不是,它会执行其他代码并最终循环回检查客户端的输入。
如何检查客户端是否在未运行的情况下传递了任何输入readLine()
?如果我运行readLine()
,线程将挂起直到输入被传递?
有没有办法让BufferedReader.readLine()
不挂?
我正在创建一个服务器:
如何检查客户端是否在未运行的情况下传递了任何输入readLine()
?如果我运行readLine()
,线程将挂起直到输入被传递?
您可以使用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()