URL url = new URL("http://target.com/test.zip");  HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();  //设置User-Agent  httpConnection.setRequestProperty("User-Agent","NetFox");  //设置断点续传的开始位置  httpConnection.setRequestProperty("RANGE","bytes=4096");  //获得输入流  InputStream input = httpConnection.getInputStream(); 





---------------------------------------------------------------------------------------------

19 七

断点续传核心代码

断点续传核心代码

/*** 断点续传* @param url*/private void duanDianXuChuan(final String url){try {Runnable r = new Runnable() {@Overridepublic 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;}} elsebreak;}} 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. Gradle 修改生成apk时的文件名
  2. Android客户端上传文件到服务器端
  3. Android蓝牙通信代码
  4. Android代码规范
  5. android典型代码系列(二十二)------按键使上面的EditText抖动
  6. Android Lib Project与Android Project中R文件的区别
  7. Android OKhttp 上传文件袋参数

随机推荐

  1. Android(安卓)NFC读MifareClassic卡获取
  2. [Android(安卓)基础] -- Android(安卓)8.
  3. Android(安卓)Mms专题之:接收信息流程
  4. 详解Android冷启动实现APP秒开的方法
  5. mac android studio 执行terminal命令出
  6. Android(安卓)开发环境搭建 与在编译中遇
  7. Intent filter 关于Action、Category属性
  8. android 内嵌字体样式
  9. Android:实现一个带动画轮播效果的公告条
  10. Android之Handler有感(一)