当前位置: 移动技术网 > IT编程>开发语言>Java > 多线程复制文件夹

多线程复制文件夹

2018年03月16日  | 移动技术网IT编程  | 我要评论
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();
    }
}

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网