package com.files;
import java.io.File;
/*
-
将一个非空多层目录剪切到另外一个盘
*/
public class CopyFile {public static void main(String[] args) {
File src = new File("E:" + File.separator + "in"); File dest = new File("D:"); copy(src, dest); deleteFile(src);
}
// 将file目录复制到file2
public static void copy(File file, File file2) {// 判断文件是否存在 if (file.exists()) {// 存在 // 判断文件是否是一个目录 if (file.isDirectory()) {// 是目录 // 将file2的文件名设置为跟file一样 在file2创建同名文件夹 String str = file.getAbsolutePath();// 获取file的路径 // 替换盘符 str = str.replace('E', 'D'); // 分割 String[] strings = str.split("\\\\"); StringBuffer sb = new StringBuffer(); for (String string : strings) { sb = sb.append(string + "\\\\"); } // file2的路径 String file2Path = sb.toString(); // 将file的盘符换掉 file2 = new File(file2Path); // 创建目录 file2.mkdir(); // 遍历单层的目录或者文件 File[] files = file.listFiles(); // 遍历的是子文件 for (File file3 : files) { copy(file3, file2.getAbsoluteFile()); } } else {// 是文件 // 获取文件名,在file2中创建相同名字的文件 String str = file.getAbsolutePath(); str = str.replace('E', 'D'); String[] strings = str.split("\\\\"); StringBuffer sb = new StringBuffer(); for (String string : strings) { sb = sb.append(string + "\\\\"); } String file2Path = sb.toString(); file2 = new File(file2Path); // 将文件复制到file2 file.renameTo(file2); } }
}
// 删除一个非空多层目录
public static void deleteFile(File file) {
// 判断目录是否存在
if (file.exists()) {// 目录存在
// 判断文件是否是一个目录
if (file.isDirectory()) {// 是目录
// 遍历单层目录
File[] files = file.listFiles();
for (File f : files) {
deleteFile(f);// 递归
}
file.delete();// 删除空目录
} else {
// 是文件
file.delete();
}
deleteFile(file);
}}
}