Java多线程下载器FileDownloader(支持断点续传、代理等功能)
前言
在我的任务清单中,很早就有了一个文件下载器,但一直忙着没空去写。最近刚好放假,便抽了些时间完成了下文中的这个下载器。
介绍
同样的,还是先上效果图吧。

Jar包地址位于 FileDownloader
目前实现的主要功能有:
- 多线程下载
- 断点续传
- 自定义头部等
即将完成的包括:
- 添加代理功能
- ...
感觉做了回标题党,代理功能由于时间关系,将在下次更新加入。
关于设置代理,我这篇文章 Java实现Ip代理池 中有具体的设置方法。
另外除了这个代理功能,我也实在不知道下载器能加些啥功能了。。
使用说明
jar包的运行方式不用多说了吧,直接
java -jar FileDownloader.jar
这样不加任何参数的话会输出下文中的内容:
_____ __ ___ __ __
/ __(_) /__ / _ \___ _ _____ / /__ ___ ____/ /__ ____
/ _// / / -_) // / _ \ |/|/ / _ \/ / _ \/ _ `/ _ / -_) __/
/_/ /_/_/\__/____/\___/__,__/_//_/_/\___/\_,_/\_,_/\__/_/
usage: FileDownloader [options ...] <url>
-c 加上表明关闭断点续传,默认开启
-H,--Header <arg> 添加请求头部,格式:"header=value",多个可叠加使用该H参数
-h,--help 使用说明
-n,--num <arg> 开启的线程数量,默认为8
-U,--User-Agent <arg> 添加User-Agent标识头
于是,我们可以加上一些参数,比如这样
java -jar FileDownloader.jar -c -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0" -H Accept=* -H Cookie=value -n 10 https://www.picpick.org/releases/latest/picpick_inst.exe
这样的话,我们就是 关闭了断点续传功能,带上了 “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0” 的User-Agent, “*”的Accept头部,value的Cookie,同时线程数量设置为10,然后便开始下载我们后面的资源了。其中注意如果某项值含有空格的话,要用双引号圈起来,比如上面的user-agent,不然可能会解析错误。
实现
最后,如果对于其中一些实现细节感兴趣的朋友,可以 到asche910这里查看源码,这里由于篇幅原因就不贴上了。
Java多线程下载器FileDownloader(支持断点续传、代理等功能)的更多相关文章
- java多线程下载和断点续传
java多线程下载和断点续传,示例代码只实现了多线程,断点只做了介绍.但是实际测试结果不是很理想,不知道是哪里出了问题.所以贴上来请高手修正. [Java]代码 import java.io.File ...
- java实现下载器(以及创建一个URL对象)
java实现下载器(以及创建一个URL对象) 1.思路讲解: (1)注意路径:是网络路径噢 (2)创建创建网路协议对象(远程对象):HttpURLConnection urlConnection (3 ...
- <基于Qt与POSIX线程>多线程下载器的简易搭建
原创博客,转载请联系博主! 本项目已托管到本人Git远程库:https://github.com/yue9944882/Snow 项目目标 Major Functionality 开发环境: Ce ...
- JAVA多线程下载网络文件
JAVA多线程下载网络文件,开启多个线程,同时下载网络文件. 源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...
- java编写的Http协议的多线程下载器
断点下载器还在实现中...... //////////////////////////////////界面/////////////////////////////////////////// pac ...
- java 多线程下载文件并实时计算下载百分比(断点续传)
多线程下载文件 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来 ...
- ASIHTTPRequest下载示例(支持断点续传)
一.创建网络请求队列 首先,创建网络请求队列,如下: ASINetworkQueue *que = [[ASINetworkQueue alloc] init]; self.netWorkQueu ...
- edtftpj让Java上传FTP文件支持断点续传
在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...
- python10min系列之多线程下载器
今天群里看到有人问关于python多线程写文件的问题,联想到这是reboot的架构师班的入学题,我想了一下,感觉坑和考察的点还挺多,可以当成一个面试题来问,简单说一下我的想法和思路吧,涉及的代码和注释 ...
随机推荐
- Channel 9视频整理【1】
David Dong 微软mvp https://www.facebook.com/DotNetWalker http://studyhost.blogspot.tw/ https://ch ...
- [转载] ASP.NET MVC (一)——深入理解ASP.NET MVC
个人认为写得比较透彻得Asp.net mvc 文章,所以转载过来,原文链接在最后: ASP.NET vs MVC vs WebForms 许多ASP.NET开发人员开始接触MVC认为MVC与ASP.N ...
- Qt 5.6.0 动态编译(VS2013 x86 target xp openssl icu webkit)
经历了多次延期后,在3月16号,Qt发布了5.6.0版本(全面支持高DPI无疑是一个亮点),从5.6.0版本开始,Qt直接移除了webkit模块,让webengine作为其替代选择,不过webengi ...
- InnoExtractor可以解压一些安装文件,以获得其中的特殊文件
you can use InnoExtractor unpack the installer file and get uniSimpleEnc.dcu file. https://www.board ...
- 创业游戏模拟器 Startup 游戏试玩
买的正版游戏,还在beta阶段.因为对这种经营类的游戏挺感兴趣,结合自己也是做这个行当的.算是一次性通关了吧.我来评价一下这个游戏.足足玩了有5个多小时.从1级玩到15级.解锁了所有的内容.员工从1个 ...
- rem.js移动布局实例教程
最近想买需要开发微站,微信公众号内嵌入的移动web,总结方法可以使用css3直接使用百分比布局,也可以使用bootstrap做响应式布局等多种方法,个人感觉看项目需要,笔者使用rem.js进行移动前端 ...
- Spring Framework 组件注册 之 @Component
Spring Framework 组件注册 之 @Component 写在前面 在spring大行其道的今天,对于spring的使用和掌握乃是不可缺少的必备技能.但是spring的整个体系尤为庞大,对 ...
- ZooKeeper学习之路(五)—— ACL权限控制
一.前言 为了避免存储在Zookeeper上的数据被其他程序或者人为误修改,Zookeeper提供了ACL(Access Control Lists)进行权限控制.只有拥有对应权限的用户才可以对节点进 ...
- c/c++基础内容回顾
1.1基本数据类型 1.1.1 变量的定义 变量类型 变量名 变量类型 变量名=初值: 注意:不能以C语言标识符作为变量名,变量名的第一个字符必须是字母或者下划线,其它位置字符必须是字母.数字.下划线 ...
- Docker安装MySql-挂载外部数据和配置
环境 CentOS:7 Docker:1.31.1 MySql:5.7 拷贝mysql配置文件 1.首先创建mysql容器 -p : -e MYSQL\_ROOT\_PASSWORD= -d my ...