欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

多线程复制文件夹

程序员文章站 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();
    }
}

多线程复制文件夹

多线程复制文件夹