废话不多说,上代码
copyDir()【目录拷贝】
private static void copyDir(File srcFile, File descFile) throws IOException {
// 获取当前源目录下子目录
File[] files = srcFile.listFiles();
// 判断当前源目录下是否有目录
if(files == null){ // 若无,则只建立源目录
makeDir(srcFile, descFile);
return;
}else{// 若有,则判断是否为文件
// 在目的目录创建源目录
makeDir(srcFile, descFile);
// 更新目的目录
String s;
if(descFile.getParent() == null) {
s = descFile.getPath() + srcFile.getName();
}else{
s = descFile.getPath() + "/" + srcFile.getName();
}
descFile = new File(s);
// 循环遍历源目录下所有文件或目录
for(File value : files){
// 判断是否为文件
if(value.isFile()){// 若是文件,则进行拷贝
// 完成文件拷贝
copy(value, descFile);
}else{ // 若是目录,则进行递归
copyDir(value, descFile);
}
}
}
}
makeDir()【创建目录】
private static void makeDir(File srcFile, File descFile) {
String s;
// 获取路径字符串
if(descFile.getParent() == null) {
s = descFile.getPath() + srcFile.getName();
}else{
s = descFile.getPath() + "/" + srcFile.getName();
}
File newDir = new File(s);
newDir.mkdir();
}
copy()【拷贝文件】
private static void copy(File value, File descFile) throws IOException {
String s;
if(descFile.getParent() == null) {
s = descFile.getPath() + value.getName();
}else{
s = descFile.getPath() + "/" + value.getName();
}
FileOutputStream fos = new FileOutputStream(s);
FileInputStream fis = new FileInputStream(value);
// 以1MB为大小拷贝
byte[] bytes = new byte[1024 * 1024];
int count = 0;
while((count = fis.read(bytes)) != -1){
fos.write(bytes,0,count);
}
fos.flush();
fos.close();
fis.close();
}
主方法
public static void main(String[] args) throws IOException {
// 源目录
File srcFile = new File("D:/BaiduNetdiskDownload/CopyTest");
// 目标目录
File descFile = new File("D:/迅雷下载");
// 拷贝目录
copyDir(srcFile, descFile);
}



