BufferedReader ReadLine冻结了程序

时间:2013-01-25 19:26:36

标签: java bufferedreader

我的代码如下;

当我使用BufferedRead readLine()时,整个程序被冻结。问题是readLine将返回该行,直到它到达行尾。因为服务器不会发送新行char值,它不会关闭。

那我怎么能克服这个?请编辑我的代码;

                  while (ok) {
                        BufferedReader re = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        aString = re.readLine();
                        ...
                    }

注意:我想以编程方式执行此操作,而不是去杀死正在运行它的进程

UPDATE

StringBuilder re= new StringBuilder();
                    while ((c = r.read()) >= 0) {
                            re.append( (char)c ) ;  
                    }
                    String result = re.toString();
                    byte[] contentInBytes = result.getBytes();
                    out.write(contentInBytes);
                    out.flush();
                    out.close();

1 个答案:

答案 0 :(得分:1)

不要使用BufferedReader的readLine()方法。使用read()方法,它将读取单个字符。你必须将它们从整数转换为字符,但这样可以让你无法读取换行符。

编辑:添加 假设“re”是你的缓冲套接字输入流阅读器...

while ((i = re.read()) != -1)
{
   if (i > 0)
   {
      char c = (char) i;
      // Do something with the character
   }
}

结束编辑

此外,如果您担心服务器没有响应,那么您可能希望在Socket上暂停:

socket.setSoTimeout(milliseconds);