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