在 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
上设置超时来解决此问题 - 套接字保持打开状态以防服务器响应延迟。您可以简单地告诉它不要等那么久。在此处查看超时选项:
我正在下载一个文件,然后使用以下代码将其写入 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
上设置超时来解决此问题 - 套接字保持打开状态以防服务器响应延迟。您可以简单地告诉它不要等那么久。在此处查看超时选项: