Java多線程下載網(wǎng)圖的完整案例
Java多線程下載網(wǎng)圖案例
此案例依賴——文件操作工具類(FileUtils)
使用 apache 的commons-io包下的FileUtilsimportorg.apache.commons.io.FileUtils;
點(diǎn)擊即可下載,然后導(dǎo)入IDEA的庫中或者項(xiàng)目中。

導(dǎo)包

首先創(chuàng)建一個(gè)下載器
步驟:
1.新建一個(gè)download類
2.在類中建立一個(gè)下載方法
下載方法需要接收2個(gè)變量,一個(gè)是url下載地址,一個(gè)是name文件名稱
3.在下載方法中調(diào)用文件操作工具類(FileUtils)
4.try/catch捕獲異常并提示異常
| 方法 | 說明 |
|---|---|
| copyURLToFile(URL source, File destination) | 將字節(jié)從URL復(fù)制source到文件中 destination。 |
//下載器
class download{
//下載方法
public void down(String url,String name){
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("IO異常,download方法出現(xiàn)問題");
}
}
}
然后創(chuàng)建一個(gè)線程類
步驟:
1.創(chuàng)建線程類-多線程下載器,繼承Thread類
2.定義2個(gè)私有變量(url下載地址,name文件名稱)
3.創(chuàng)建有參數(shù)構(gòu)造器(用于初始化2個(gè)私有變量的值)
4.重寫Thread父類的run方法
run方法的方法體內(nèi)寫入要執(zhí)行的任務(wù),我們的任務(wù)就是要下載網(wǎng)圖,因?yàn)橐玫较螺d器里面的下載方法,所以直接實(shí)例化download類,然后調(diào)用download類中的down方法,由于down方法需要接受2個(gè)String類型的變量(url和name),直接將2個(gè)私有變量傳入進(jìn)去,最后給個(gè)提示,打印出下載的文件名稱。
public class 多線程下載器 extends Thread{
private String url;
private String name;
public 多線程下載器(String url, String name) {
this.url = url;
this.name = name;
}
@Override
public void run() {
download download = new download();
download.down(url,name);
System.out.println("下載了名為"+name);
}
}
在main方法中創(chuàng)建線程并啟動
步驟:
1.創(chuàng)建一個(gè)main方法
2.創(chuàng)建3個(gè)線程
創(chuàng)建線程的時(shí)候要傳入?yún)?shù),目的是調(diào)用有參構(gòu)造器初始化私有變量
這里傳入3個(gè)圖片的地址以及文件的名稱
注意文件名稱,下載的文件類型要對應(yīng)好相應(yīng)的后綴名
多線程下載器 t1=new 多線程下載器(" 多線程下載器 t2=new 多線程下載器(" 多線程下載器 t3=new 多線程下載器("
3.用start開啟3個(gè)線程
start方法會開啟新的線程,并且在新的線程中調(diào)用線程類中的run方法
public static void main(String[] args) {
多線程下載器 t1=new 多線程下載器("https://www.baidu.com/favicon.ico","百度.ico");
多線程下載器 t2=new 多線程下載器("https://www.apple.com/favicon.ico","蘋果.ico");
多線程下載器 t3=new 多線程下載器("https://www.jd.com/favicon.ico","京東.ico");
t1.start();
t2.start();
t3.start();
}
全部代碼:
package 多線程;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class 多線程下載器 extends Thread{
private String url;
private String name;
public 多線程下載器(String url, String name) {
this.url = url;
this.name = name;
}
@Override
public void run() {
download download = new download();
download.down(url,name);
System.out.println("下載了名為"+name);
}
public static void main(String[] args) {
多線程下載器 t1=new 多線程下載器("https://www.baidu.com/favicon.ico","百度.ico");
多線程下載器 t2=new 多線程下載器("https://www.apple.com/favicon.ico","蘋果.ico");
多線程下載器 t3=new 多線程下載器("https://www.jd.com/favicon.ico","京東.ico");
t1.start();
t2.start();
t3.start();
}
}
//下載器
class download{
public void down(String url,String name){
try {
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
e.printStackTrace();
System.out.println("IO異常,download方法出現(xiàn)問題");
}
}
}
運(yùn)行結(jié)果:

下載的文件默認(rèn)位置在項(xiàng)目下如圖:

雙擊圖片文件可進(jìn)行查看

總結(jié)
到此這篇關(guān)于Java多線程下載網(wǎng)圖的文章就介紹到這了,更多相關(guān)Java多線程下載網(wǎng)圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Fluent Mybatis實(shí)戰(zhàn)之構(gòu)建項(xiàng)目與代碼生成篇上
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis2021-10-10
Java使用JDBC實(shí)現(xiàn)Oracle用戶認(rèn)證的方法詳解
這篇文章主要介紹了Java使用JDBC實(shí)現(xiàn)Oracle用戶認(rèn)證的方法,結(jié)合實(shí)例形式分析了java使用jdbc實(shí)現(xiàn)數(shù)據(jù)庫連接、建表、添加用戶、用戶認(rèn)證等操作流程與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08
Spring BeanFactory和FactoryBean區(qū)別解析
這篇文章主要介紹了Spring BeanFactory和FactoryBean區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
java計(jì)算自然數(shù)中的水仙花數(shù)的方法分享
這篇文章主要介紹了java計(jì)算自然數(shù)中的水仙花數(shù)的方法,需要的朋友可以參考下2014-03-03
MyBatis的@SelectProvider注解構(gòu)建動態(tài)SQL方式
這篇文章主要介紹了MyBatis的@SelectProvider注解構(gòu)建動態(tài)SQL方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

