Java多线程下载器FileDownloader(支持断点续传、代理等功能)

时间:2023-03-08 21:46:26

前言

在我的任务清单中,很早就有了一个文件下载器,但一直忙着没空去写。最近刚好放假,便抽了些时间完成了下文中的这个下载器。

介绍

同样的,还是先上效果图吧。

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这里查看源码,这里由于篇幅原因就不贴上了。