如何在android中使用InputStream和FileOutputStream下载文件时检测网络连接是否已关闭?

时间:2015-02-12 15:00:14

标签: android inputstream httpresponse fileoutputstream httpentity

我正在下载文件,然后使用以下代码将其写入SD卡:

 HttpResponse response = httpClient.execute(request);
 HttpEntity entity = response.getEntity();
 InputStream is = entity.getContent();
 File file = new File(Environment.getExternalStorageDirectory()+"/MyProject/data");
 FileOutputStream fos = new FileOutputStream(file);
 int inByte;
 while((inByte = is.read()) != -1){ 
     fos.write(inByte);
     System.out.println("in while loop inByte: "+inByte);
 }
 fos.close();
 is.close();

一切都很好。通常下载文件需要2分钟。如果我在下载过程中取出网线,那么它似乎永远留在循环中。该代码在try catch块中,但我没有任何异常。无论如何,当拔掉网络电缆时,有没有离开那个循环。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您应该能够通过在HttpClient上设置超时来解决此问题 - 如果服务器在响应中有延迟,则套接字保持打开状态。你可以简单地告诉它不要等待这么久。请参阅此处的超时选项:

How to set HttpResponse timeout for Android in Java