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

How to detect if network connection is down while downloading file using InputStream and FileOutputStream in android?

我正在下载一个文件,然后使用以下代码将其写入 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 分钟。如果我在下载过程中拔掉网线,那么它似乎永远停留在 while 循环中。该代码在 try catch 块中,但我没有得到任何异常。无论如何,当网络电缆被拔掉时,是否可以摆脱 while 循环。提前致谢。

您应该能够通过在 HttpClient 上设置超时来解决此问题 - 套接字保持打开状态以防服务器响应延迟。您可以简单地告诉它不要等那么久。在此处查看超时选项: