读取远程文件时处理超时

时间:2011-07-18 05:34:57

标签: java file timeout

我正在读取由web服务器动态呈现的远程文件(xml)。有时Web服务器需要时间来呈现远程文件。 有时netowrk存在问题,远程网址无法访问 我使用以下代码:

URL url = new URL(myurl);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
String strOutput = "";
System.out.println("start now");
//my code hangs after  priting start now    sometime.
//i think in.ready blocks the code flow.
if(in.ready() ){         
  while ((inputLine = in.readLine()) != null) {
       strOutput = strOutput + inputLine;
  }
}

如果输入流没有准备好,我希望我的代码继续阻止。我怎么处理它?<​​/ p>

如何确保我的代码流不会被无限制地阻止?

1 个答案:

答案 0 :(得分:1)

您可以在网址连接上设置超时。请参阅javadocs

但是你必须稍微改变你的流:

URLConnection con = url.openConnection();
con.setReadTimeout(timeout);
InputStream in = con.getInputStream();