標籤:android 檔案下載
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也不報錯 究竟什麼原因期待大神指點啊!