多线程复制文件夹

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();
    }
}

 

posted on 2018-03-16 13:54  Honey_Badger  阅读(977)  评论(0编辑  收藏  举报

导航

github