package cn.hp.demo01; import java.io.*; /* * 1.模拟QQ相册上传图片(上传指定文件夹下所有的图片) 多线程上传(每个图片开辟一个子线程)*/ public class Demo01 { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); //创建输入流读取要复制的文件 //创建两个目标文件夹对象 File file1 = new File("D:\\宋怡宁020824\\D0719\\img2"); File file2 = new File("D:\\宋怡宁020824\\D0719\\img1");//接收图片的文件夹 //获取要上传的目录的子文件 File[] files = file1.listFiles(); for (int i = 0;i<files.length;i++) { CopyThread t =new CopyThread(); t.setFile(files[i]); t.setFile2(file2); t.start(); } long end = System.currentTimeMillis(); System.out.println("传输时长:"+(end-start)); } } /* * 复制一张图片,到指定的位置 * */ class CopyThread extends Thread{ private File file;//要复制的图片 private File file2; public File getFile() { return file; } public void setFile(File file) { this.file = file; } public File getFile2() { return file2; } public void setFile2(File file2) { this.file2 = file2; } @Override public void run() { try { //创建输入流读取要复制的文件 FileInputStream in = new FileInputStream(file); //创建输出流写入要复制的文件(粘贴) File img = new File(file2,file.getName()); FileOutputStream out = new FileOutputStream(img); //边读边写 byte[]bytes = new byte[20];//传输数据的缓冲区 int len = 0; while ((len = in.read(bytes))!=-1){ out.write(bytes,0,len);//读len个,就写len个 } //关闭流,释放资源(流创建之后在内存中,不关JVM会自动关闭,延迟高) out.close(); in.close(); }catch (FileNotFoundException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } }
模拟QQ相册上传图片(上传指定文件夹下所有的图片) 多线程上传(每个图片开辟一个子线程)
最新推荐文章于 2025-05-08 10:00:08 发布