前言
在我的任務清單中,很早就有了一個文件下載器,但一直忙着沒空去寫。最近剛好放假,便抽了些時間完成了下文中的這個下載器。
介紹
同樣的,還是先上效果圖吧。
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這里查看源碼,這里由於篇幅原因就不貼上了。