import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class MyTreeCopy {
public static void main(String[] args) {
MyTreeCopy cp = new MyTreeCopy();
String source = "F:\\MyWorkSpace\\test-master";
String dest = "F:\\MyWorkSpace\\test";
File sourceFile = new File(source);
File destFile = new File(dest);
cp.copyDirs(sourceFile, new File(destFile.getAbsolutePath()+"\\"+sourceFile.getName()));
}
public void copyDirs(File source, File dest) {
for(File f: source.listFiles()) {
File newFile = new File(dest.getAbsolutePath()+"\\"+f.getName());
if(f.isDirectory()) {
newFile.mkdirs();
copyDirs(f,newFile);
}else {
copyFiles(f,newFile);
}
}
}
public void copyFiles(File source, File dest) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(source));
bos = new BufferedOutputStream(new FileOutputStream(dest));
byte[] datas = new byte[1024*8];
int length = -1;
while((length = bis.read(datas))!=-1) {
bos.write(datas, 0, length);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(null!=bos) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=bis) {
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}