Java多线程下载网图的完整案例
作者:花伤情犹在 发布时间:2022-10-17 23:59:02
Java多线程下载网图案例
此案例依赖——文件操作工具类(FileUtils)
使用 apache 的commons-io包下的FileUtilsimportorg.apache.commons.io.FileUtils;
下载commons-io包
官方API文档
点击即可下载,然后导入IDEA的库中或者项目中。
导包
首先创建一个下载器
步骤:
1.新建一个download类
2.在类中建立一个下载方法
下载方法需要接收2个变量,一个是url下载地址,一个是name文件名称
3.在下载方法中调用文件操作工具类(FileUtils)
4.try/catch捕获异常并提示异常
方法 | 说明 |
---|---|
copyURLToFile(URL source, File destination) | 将字节从URL复制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方法出现问题");
}
}
}
然后创建一个线程类
步骤:
1.创建线程类-多线程下载器,继承Thread
类
2.定义2个私有变量(url下载地址,name文件名称)
3.创建有参数构造器(用于初始化2个私有变量的值)
4.重写Thread父类的run方法
run方法的方法体内写入要执行的任务,我们的任务就是要下载网图,因为要用到下载器里面的下载方法,所以直接实例化download类,然后调用download类中的down方法,由于down方法需要接受2个String类型的变量(url和name),直接将2个私有变量传入进去,最后给个提示,打印出下载的文件名称。
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方法中创建线程并启动
步骤:
1.创建一个main方法
2.创建3个线程
创建线程的时候要传入参数,目的是调用有参构造器初始化私有变量
这里传入3个图片的地址以及文件的名称
注意文件名称,下载的文件类型要对应好相应的后缀名
多线程下载器 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");
3.用start开启3个线程
start方法会开启新的线程,并且在新的线程中调用线程类中的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方法出现问题");
}
}
}
运行结果:
下载的文件默认位置在项目下如图:
双击图片文件可进行查看
总结
来源:https://blog.csdn.net/qq_31762741/article/details/115258747


猜你喜欢
- 本文实例为大家分享了Android实现拼图游戏的具体代码,供大家参考,具体内容如下本人是用 android studio 完成的源码pack
- MyEclipse2017创建Spring项目,供大家参考,具体内容如下1、创建一个Web Project2、右击项目-->Prope
- 运行原理1、不同线程中所包含的栈帧是不允许存在相互引用的。2、如果当前方法调用了其他方法,方法返回之际,当前栈帧会传回此方法的执行结果给当前
- 本文实例讲述了C#使用foreach语句简单遍历数组的方法。分享给大家供大家参考。具体如下:using System;public clas
- 本文实例分析了Android编程之json解析的方法。分享给大家供大家参考,具体如下:JSON的定义:一种轻量级的数据交换格式,具有良好的可
- 背景之前我不想用注解来写启动框架,因为启动框架需要的参数太多了。将参数都定义在注解内和写一个task就没有本质上的差别,所以一直觉得没必要用
- 本文实例讲述了spring mvc 实现获取后端传递的值。分享给大家供大家参考,具体如下:jsp页面怎么获取从后端传递过来的值?JSTL 方
- 什么是进程?当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。什么是线程?线程是程序执行流的最小单元。
- springboot返回文件流@GetMapping(value = "/file/{fileName}")public
- Android WebView常见问题解决方案汇总:就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了we
- 本文实例为大家分享了Android封装MVP实现登录注册功能,供大家参考,具体内容如下model包:import com.bwei.mvps
- 一.前提1.栈的内存原理图2.JVM是怎么运行方法的???1.在运行阶段的时候,classLoader类加载器会把class文件中方法对应的
- java身份证合法性校验并获取身份证号有效信息,供大家参考,具体内容如下java身份证合法性校验/**身份证前6位【ABCDEF】为行政区划
- 目录一、首先导入生成二维码和微信支付环境二、在application.yml文件配置微信所有需的基本配置1.导入2.创建MyWXPayCon
- 只要是开发和手机通讯录有关的应用,总要学会获取联系人信息,每次都google很麻烦,怎么办?写一个工具类,获取到通讯录里所有的信息并分好类,
- xxljob介绍XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上
- Android init.rc文件详解本文主要来自$ANDROID_SOURCE/system/init/readme.txt的翻译.1 简
- C#中Directory.GetFiles() 函数的使用C#中Directory.GetFiles(string path , strin
- android通过google API获取天气信息public class WeatherActivity extends Activity
- 本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下HTTP请求工具类:功能:1、获取网页html2、下载网络图片u