public static void downFile(final String url){
new Thread(){
public void run(){
FileOutputStream os=null;
try{
InputStream input=null;
URLConnection httpUrlConnection= new URL(url).openConnection();
//int contentLength = httpUrlConnection.getContentLength();
input =httpUrlConnection.getInputStream();
File file = new File("C:\\Users\\Administrator\\Desktop\\Apknew.apk");
//假设目标文件已经存在。则删除。产生覆盖旧文件的效果
if(file.exists())
{
file.delete();
}
os = new FileOutputStream(file);
byte[] buffer = new byte[4*1024];
// 读取到的数据长度
int len;
while((len=input.read(buffer)) != -1){
os.write(buffer,0,len); //这里不能写成os.write(buffer)
}
os.flush();
os.close();
input.close();//这里一定不能忘记关闭输入流
//Log.v("cmd", "文件完成下载,路径为:"+file.getAbsolutePath());
//update();
System.out.println("完成下载");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
}
}
}.start();
}
近期做项目用到文件下载。于是乎百度了N多下载代码,然后照抄,我这里是用来下载apk的,重复多次都是文件能够下载,但安装apk是出现解析包错误。
经耐心检查发现两处错误
!
1、input输入流忘记关闭了
2、os.write(buffer,0,len)写成了os.write(buffer) 百度出来的好多都是这样写的,并且Eclipse也不报错 到底什么原因期待大神指点啊!