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

更多相关文章

  1. 修改 android 手机 hosts 文件的方法
  2. android 使用post方式上传文件
  3. Android NDK学习(5)调用.so文件
  4. Android使用GET_CONTENT Action获取打开相应文件类型的应用
  5. Android简单文件浏览器源代码
  6. android播放音频文件(MediaPlayer)和录音(MediaRecorder)--播放
  7. 文件操作与SDCard读写访问
  8. Android Studio 小技巧(1):如何导入AAR文件

随机推荐

  1. c语言中的注释符号是什么
  2. c语言的标识符允许使用关键字吗?
  3. c语言函数类型有几种
  4. c语言输出语句是什么
  5. 输入一个字符,如何判断是字母,数字还是特
  6. asp.net是什么?
  7. C语言怎么输入十个数输出最大值
  8. %lf在c语言中表示什么
  9. c程序编译后生成什么文件
  10. 在C语言中,要求参加运算的数必须是整数的