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也不报错 到底什么原因期待大神指点啊!