package cn.hp.work01;
import java.io.*;
/**
* 1.模拟QQ相册上传图片(上传指定文件夹下所有的图片)
* 多线程上传(每个图片开辟一个子线程)
*/
public class Work01 {
public static void main(String[] args) {
System.out.println("-->主线程开启...");
//创建子线程对象
Thread t1 = new ThreadA();
Thread t2 = new ThreadA();
Thread t3 = new ThreadA();
Thread t4 = new ThreadA();
//t1.run(); 相当于调用普通方法 启线程用start()
t1.setName("子线程01");//设置线程名字
t1.setPriority(6);//设置线程优先级,最高优先级是10
t1.start();//开启子线程
t2.setName("子线程02");
t2.start();//开启子线程
t3.setName("子线程03");
t3.start();//开启子线程
t4.setName("子线程04");
t4.start();//开启子线程
//把f1内所有的图片,上传到f2中
File f1 = new File("D:\\img666");
File f2 = new File("D:\\img777");
copy(f1,f2);
}
/**
* 把f1内所有的图片,上传到f2中
*/
public static void copy(File f1,File f2){
//获取f1的子文件
File[] imgs = f1.listFiles();
//遍历,每次循环都是一个要复制的图片
for (int i = 0; i < imgs.length ; i++) {
//System.out.println(imgs[i]);
try {
//通过io流把文件边读边写,复制到f2目录中
FileInputStream in = new FileInputStream(imgs[i]);
//拼接目标位置的图片路径(f2+图片名称)
File imgFile = new File(f2, imgs[i].getName());
//System.out.println("复制到img2文件夹下的图片路径 = " + imgFile);
FileOutputStream out = new FileOutputStream(imgFile);
byte[]bytes=new byte[1024];//缓冲区,把数据先读到缓冲区内
int len = in.read(bytes);//读取到的字节个数存到len中
while(len!=-1){
//把读取到字节数组bytes中的数据,写入到f2目录中
out.write(bytes,0,len);//读了多少就写多少
//继续读
len = in.read(bytes);
}
//关闭流释放资源
out.close();
in.close();
System.out.println("-->QQ相册图片[" + imgs[i].getName()+"]已经上传完毕!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//自定义的子线程类
class ThreadA extends Thread{
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
System.out.println(this.getName()+":"+i);
}
}
}
模拟QQ相册上传图片(上传指定文件夹下所有的图片) 多线程上传(每个图片开辟一个子线程)
最新推荐文章于 2024-07-14 14:59:27 发布