大家好,又见面了,我是全栈君。
为什么是二呢,之前遇到过一次了,详见http://blog.csdn.net/jason0539/article/details/12222173
这次的原因不同,再记录下
public class DownloadTask {
/**
* @param path下载地址
* @param filePath存储路径
* @param progressDialog进度条
* @return
* @throws Exception
*/
public static File getFile(String path,String filePath,ProgressDialog progressDialog) throws Exception{
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(2000);
connection.setRequestMethod("GET");
if(connection.getResponseCode() == 200){
int total = connection.getContentLength();
progressDialog.setMax(total);
InputStream is = connection.getInputStream();//获得socket输入流
File file = new File(filePath);
FileOutputStream fos = new FileOutputStream(file);//file输出流
byte[] buffer = new byte[1024];
int len;
int progress = 0;
while((len = is.read(buffer)) != -1){
fos.write(buffer);
progress += len;
progressDialog.setProgress(progress);
}
fos.flush();
is.close();
fos.close();
connection.disconnect();
return file;
}
return null;
}
这是一个执行下载任务的类,用来从服务器下载更新用的apk,结果下载成功后,跳转到安装页面,却提示解析包时出现错误,这样的错误真是让人头疼,跟代码无关,没有头绪。
后来发现有类似情况http://bbs.csdn.net/topics/380117090?page=1#post-397007671
但是没有解决方案,对比发现下载来的apk和服务器文件夹里的apk大小有些差别,我就尝试把每次读取的byte[]做小一点,也就是
byte[] buffer = new byte[1024];
这行代码,把1024改成了128,又改成了64,结果就没问题了。
意外的收货。你也遇到类似问题的话尝试一下,good luck。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(转载请说明出处)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121364.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...