android斷點續傳代碼

來源:互聯網
上載者:User

/**<br />* 斷點續傳<br />* @param url<br />*/<br />private void duanDianXuChuan(final String url){<br />try {<br />Runnable r = new Runnable() {<br />@Override<br />public void run() {<br />getRemoteFile(url);<br />}<br />};<br />new Thread(r).start();<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />}<br />/**<br />* 下載遠端檔案<br />* @param urlString<br />*/<br />private void getRemoteFile(String urlString){<br />try{<br />File file;<br />if(mCurSize == 0){<br />file = File.createTempFile(fileNa, fileEx);<br />currentTempFilePath = file.getAbsolutePath();<br />Log.e(“andy”,file.getName() + ” has exists.”);<br />} else {<br />file = new File(currentTempFilePath);<br />FileInputStream fis = new FileInputStream(file);<br />mCurSize = fis.available();<br />Log.e(“andy”,file.getName() + ” has ” + mCurSize + ” bytes.”);<br />}<br />URL url = new URL(urlString);<br />HttpURLConnection httpConnection = (HttpURLConnection) url<br />.openConnection();<br />httpConnection.setRequestProperty(“User-Agent”, “NetFox”);<br />String sProperty = “bytes=” + mCurSize + “-”;<br />httpConnection.setRequestProperty(“RANGE”, sProperty);<br />InputStream is = httpConnection.getInputStream();<br />Log.e(“andy”,”mTempFileName = ” + mTempFileName);<br />/*將檔案寫入暫存檔*/<br />FileOutputStream fos = new FileOutputStream(file, true);<br />byte buf[] = new byte[512];<br />do<br />{<br />int numread = is.read(buf);<br />if (numread <= 0)<br />{<br />mHandler.sendEmptyMessageDelayed(this.DOWNLOAD_FINISH, 0);<br />break;<br />}<br />mCurSize += numread;<br />mHandler.sendEmptyMessageDelayed(this.UPDATE_DOWNLOAD_PROGRESS, 0);<br />Log.e(“andy”,”current size = ” + mCurSize);<br />fos.write(buf, 0, numread);<br />}while (mContinue);<br />/*開啟檔案進行安裝*/<br />if(mCurSize == mSize) {<br />mCurSize = 0;<br />openFile(file);<br />}<br />try<br />{<br />is.close();<br />}<br />catch (Exception ex)<br />{<br />Log.e(“andy”, “error: ” + ex.getMessage(), ex);<br />}<br />}catch(Exception e){<br />e.printStackTrace();<br />}<br />}<br />/**<br />* 獲得檔案長度<br />* @param urlString<br />* @return<br />*/<br />public long getFileSize(String urlString) {<br />int nFileLength = -1;<br />try {<br />URL url = new URL(urlString);<br />HttpURLConnection httpConnection = (HttpURLConnection) url<br />.openConnection();<br />httpConnection.setRequestProperty(“User-Agent”, “NetFox”);<br />int responseCode = httpConnection.getResponseCode();<br />if (responseCode >= 400) {<br />return -2; // -2 represent access is error<br />}<br />String sHeader;<br />for (int i = 1;; i++) {<br />sHeader = httpConnection.getHeaderFieldKey(i);<br />if (sHeader != null) {<br />if (sHeader.equals(“content-length”)) {<br />nFileLength = Integer.parseInt(httpConnection<br />.getHeaderField(sHeader));<br />break;<br />}<br />} else<br />break;<br />}<br />} catch (IOException e) {<br />e.printStackTrace();<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />return nFileLength;<br />}<br />/**<br />* 計算百分比<br />* @param p1<br />* @param p2<br />* @return<br />*/<br />public static String percent(double p1, double p2) {<br />String str;<br />double p3 = p1 / p2;<br />NumberFormat nf = NumberFormat.getPercentInstance();<br />nf.setMinimumFractionDigits(2);<br />str = nf.format(p3);<br />Log.e(“andy”,”percentage = ” + str);<br />return str;<br />} 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.