在我的应用程序中,我有客户端和服务器程序,只要服务器从客户端获得连接,服务器就会将所有可用的 ID 从 MySQL 表发送到客户端,为此我使用了 while 循环来读取文件的内容。
我尝试了以下代码:
while((a=in.read())!=-1)
但是当文件中没有内容来读取while循环时我的问题没有退出,它本身就停在那里。如何退出while循环?
in.read()
将阻塞直到有数据可供读取。请参阅 API 文档http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()
此方法会一直阻塞,直到输入数据可用、检测到流结束或引发异常。
您可以in.available()
在执行 in.read() 之前检查是否有任何字节可供读取。
您不应该使用while
循环,而应该使用线程,线程将等待来自套接字的输入,当数据可用时它将读取,然后它将发送/处理在流中找到的输入。使用 while 和等待(阻塞)你的主线程不是一个好主意