在写代码之前我们要用到一个包Commons io jar包,我用的2.11.0版本支持java8以上版本
首先我们来导入包将包复制到程序的软件包中
导入进去后不能直接用需要右键添加到库中
注意图片地址是打开图片的地址输入其他地址无效
接下来我们来创建一个TestThread类来继承Thread类来写代码(代码注释已经写好也不多哔哔了)
//导入我们刚刚添加到库的包
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
//创建TestThread来继承Thread实现多线程
public class TestThread extends Thread{
//存储url地址
String url;
//存储文件名称
String name;
//写个构造器来给地址和文件名称赋值
public TestThread(String url,String name){
//给地址赋值
this.url=url;
//给文件名称赋值
this.name=name;
}
//重写线程Thread里的run方法
@Override
public void run() {
//实例下载器
WedDownLoader wedDownLoader=new WedDownLoader();
//给下载器赋值
wedDownLoader.down(url,name);
//提示一下文件下载名称
System.out.println("下载的文件名为"+name);
}
public static void main(String[] args) {
//实例几个对象并把地址和文件名字赋给它
TestThread t1=new TestThread("https://scpic.chinaz.net/files/pic/pic9/202009/apic27858.jpg","t1.jpg");
TestThread t2=new TestThread("http://img.desktx.com/d/file/wallpaper/scenery/20170120/fdf948c82074494a74bf258eed4f855d.jpg","t2.jpg");
TestThread t3=new TestThread("http://img.desktx.com/d/file/wallpaper/scenery/20170303/dfe53a7300794009a029131a062836d5.jpg","t3.jpg");
//打开线程
t1.start();
t2.start();
t3.start();
}
}
//创建下载器
class WedDownLoader{
//我们来实现下载图片方法
public void down(String url,String name){
try {
//这个是包里的下载方法url是下载地址,file是文件名称
FileUtils.copyURLToFile(new URL(url),new File(name));
} catch (IOException e) {
//捕获一下IO流异常
e.printStackTrace();
//输出一下异常的方法名称(好习惯,以后写代码方便查看那个方法异常)
System.out.println("IO异常,down方法"+name);
}
}
}
注意:多线程是同时执行的每次运行时先下载那个图片看cpu调度