多线程复制文件夹
程序员文章站
2022-04-02 23:20:33
import java.io.*; import java.util.Scanner; /** * Created by Admin on 2018/3/16. */ public class MutiFilesCopy implements Runnable{ @Override public v... ......
import java.io.*; import java.util.Scanner; /** * Created by Admin on 2018/3/16. */ public class MutiFilesCopy implements Runnable{ @Override public void run() { String fromDir="D:\\lucene\\data"; String toDir="D:\\lucene\\out"; try { copyDir(fromDir,toDir); System.out.println("copy:"+Thread.currentThread().getName()); } catch (IOException e) { e.printStackTrace(); } } public void copyDir(String fromDir, String toDir) throws IOException { File f=new File(fromDir); String[] fs=f.list(); if(!new File(toDir).exists()){ System.out.println("mkdirThread:"+Thread.currentThread().getName()); new File(toDir).mkdir(); } for(int i=0;i<fs.length;i++){ synchronized ("") { System.out.println("copyDir:"+Thread.currentThread().getName()); if ((new File(fromDir + f.separator + fs[i])).isDirectory()) { copyDir(fromDir + f.separator + fs[i], toDir + f.separator + fs[i]); } if ((new File(fromDir + f.separator + fs[i])).isFile()) { copyFile(fromDir + f.separator + fs[i], toDir + f.separator + fs[i]); } } } } private void copyFile(String sourceDir, String targetDir) throws IOException { File sourcefile=new File(sourceDir); File targetfile=new File(targetDir); FileInputStream in=new FileInputStream(sourcefile); FileOutputStream out=new FileOutputStream(targetfile); byte[] b=new byte[2097152]; //2g System.out.println("copyfileThread:"+Thread.currentThread().getName()); while ((in.read(b))!=-1){ out.write(b); } } }
/** * Created by Admin on 2018/3/16. */ public class Testcopy { public static void main(String[] args) { MutiFilesCopy m=new MutiFilesCopy(); Thread a=new Thread(m); Thread b=new Thread(m); Thread c=new Thread(m); a.start(); b.start(); c.start(); } }