Java多线程下载图片
添加commons-io插件
这里使用apache的commons-io包下的FileUtils工具类进行图片下载(官方API文档)。
首先下载commons-io插件包并解压(下载地址):
选中project,右键新建一个名为lib的文件夹:
将下载好的commons-io插件包中的commons-io-2.6.jar和commons-io-2.6-sources.jar两个文件,粘贴到新建的lib文件夹中:
选中commons-io-2.6.jar,右键选择Build Path > Add to Build Path,执行完成后顺利生成Referenced Libraries,表示添加成功。
编写多线程下载图片代码
主要步骤为编写下载器和下载方法,在run()方法中创建下载器并调用下载方法,创建多个线程对象并调用start()方法开启线程。以下为示例代码:
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class WebDownloadThread extends Thread {
private String url;
private String name;
public WebDownloadThread(String url, String name) {
this.url = url;
this.name = name;
}
//图片下载线程的执行体
public void run() {
WebDownloader webDownloader = new WebDownloader();
webDownloader.downloader(url, name);
System.out.println("下载的文件名为:"+name);
}
public static void main(String[] args) {
//创建多个图片下载线程并启动
WebDownloadThread t1 = new WebDownloadThread("https://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/2167990.jpg", "1.jpg");
WebDownloadThread t2 = new WebDownloadThread("https://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/2167910.jpg", "2.jpg");
WebDownloadThread t3 = new WebDownloadThread("https://www.oracle.com/a/ocom/img/oracle-social-share-fb.jpg", "3.jpg");
t1.start();
t2.start();
t3.start();
}
}
//下载器
class WebDownloader {
//下载方法
public void downloader(String url, String name) {
try {
FileUtils.copyURLToFile(new URL(url), new File(name));
} catch (MalformedURLException e) {
e.printStackTrace();
System.out.println("MalformedURLException");
} catch (IOException e) {
e.printStackTrace();
System.out.println("IOException");
}
}
}
执行编写好的程序,然后按F5刷新,查看图片是否已下载成功: