首页 > 编程 > Java > 正文

【Java】之 写个线程下载文件(支持断点续传)

2019-11-08 01:08:06
字体:
来源:转载
供稿:网友

持续更新。。。

本文分三次完成。


Step 1

实现功能:

  实现基本下载,参数封装。

学习方面:

  IO,URL, URLConnection, HTTPsConnection

public class DownUtils { PRivate final String url; private final String fileName; private final String targetDir; public DownUtils(String url, String fileName, String targetDir){ this.url = url; this.fileName = fileName; this.targetDir = targetDir; } public DownUtils(String url,String fileName){ this.url = url; this.fileName = fileName; this.targetDir = ""; } public void makeSureDir(){ File targetDir = new File(this.targetDir); if(!targetDir.exists()) targetDir.mkdir(); } public String getFileName(){ if (!"".equals(targetDir)){ makeSureDir(); return targetDir + File.separator + fileName; } return fileName; } public void down(){ try( RandomaccessFile raf = new RandomAccessFile(getFileName(), "rw") ) { URL url = new URL(this.url); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setConnectTimeout(8000); connection.setRequestMethod("GET"); //防止屏蔽程序抓取而返回403错误 connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); connection.setRequestProperty("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, " + "application/x-shockwave-Flash, application/xaml+xml, " + "application/vnd.ms-xPSDocument, application/x-ms-xbap, " + "application/x-ms-application, application/vnd.ms-Excel, " + "application/vnd.ms-Powerpoint, application/msWord, */*"); connection.setRequestProperty("Accept-Language", "zh-CN"); connection.setRequestProperty("Charset", "UTF-8"); InputStream inputStream = connection.getInputStream(); byte[] buffer = new byte[1024]; int hasRead = 0; while((hasRead = inputStream.read(buffer)) > 0){ raf.write(buffer, 0, hasRead); } System.out.println("info:" + url + " download success"); } catch (IOException e){ e.printStackTrace(); } } public static void main(String[] args) { DownUtils downUtils = new DownUtils("http://101.95.48.97:8005/res/upload/interface/aPPTutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png" , "yyf.png", "C://Users//donal//Desktop//tools"); downUtils.down(); }}

Step 2

实现功能:

  多线程下载

学习方面:

  thread


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表