1. 程式人生 > >Java多執行緒下載器FileDownloader(支援斷點續傳、代理等功能)

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這裡檢視原始碼,這裡由於篇幅原因就不貼上了