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. Android(安卓)Wi-Fi Disable Roaming in wpa_supplicant
  2. android文件存取
  3. Android——通过电话号码获得联系人图像、姓名
  4. Android客户端上传文件到服务器端
  5. Android(安卓)启动浏览器的方法
  6. Android(安卓)读取Resources和Assets
  7. Android分享图片
  8. Android腾讯微薄客户端开发十四:首页menu菜单
  9. NPM 和webpack 的基础使用

随机推荐

  1. 如何获取knockoutjs可观察数组的下一个元
  2. ABP(现代ASP.NET样板开发框架)系列之21、
  3. Javascript正则表达式对象和美元符号
  4. javascript-cropper插件翻译笔记
  5. javascript 构造函数中的属性与原型上属
  6. 使用Node.js初始化和配置AWS
  7. 深入浅出 Ajax 读书摘记2——【Ajax请求
  8. Javascript学习:案例7--对象属性和方法的
  9. css选择在IE中不起作用
  10. 注入html行模板的最佳方法