通过BufferedReader读取文件时,while循环没有退出

时间:2013-02-12 05:35:01

标签: java file-io java-io

在我的应用程序中我有客户端和服务器程序,每当服务器从客户端获得连接时,服务器都会将所有可用的id从MySQL表发送到客户端,为此我使用while循环来读取文件的内容。

我尝试了以下代码:

while((a=in.read())!=-1)

但我的问题是当文件中没有内容来读取while循环时没有退出,它本身就停在那里。如何退出while循环?

2 个答案:

答案 0 :(得分:1)

in.read()将阻止,直到可以读取数据。请参阅API文档http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()

  

此方法阻塞,直到输入数据可用,结束   检测到流,或抛出异常。

在执行in.read()之前,您可以in.available()检查是否有任何字节可供读取。

答案 1 :(得分:0)

您不应该使用while循环,而应该使用线程,它将等待来自套接字的输入,当数据可用时,它将读取然后它将发送/处理输入发现在溪流中。使用while并等待(阻塞)主线程不是一个好主意