有没有办法让BufferedReader.readLine()
不挂?
我正在创建一个服务器:
如何在不运行readLine()
的情况下检查客户端是否已提供任何输入?如果我运行readLine()
,线程将挂起,直到输入传递?
答案 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()