删除不了文件夹(目录)中还有文件夹(子目录)的文件
public static void deleteDir() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入需要删除的源目录:");
String delPath = sc.next();// 从控制台获取源路径
File dir = new File(delPath); // 创建一个代表目录的File对象
if (dir.exists()) {
File[] files = dir.listFiles(); // 得到File数组
for (File file : files) { // 遍历所有的子目录和文件
if (file.isDirectory()) {
deleteDir(); // 如果是目录,递归调用deleteDir()
} else {
// 如果是文件,直接删除
file.delete();
}
}
// 删除完一个目录里的所有文件后,就删除这个目录
dir.delete();
System.out.println("删除成功!");
}
else
System.out.println("查无此目录!");
}
}
'File.delete()' 的结果已忽略
'dir.delete()' 的结果已忽略
可以删除一个文件夹(目录)及其里的文件夹(子目录)和文件;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入需要删除的源目录:");
String delPath = sc.next();
deleteDir(delPath);
}
//改为参数传入,不然递归会一直调用控制台输入
public static void deleteDir(String path) {
File dir = new File(path);
if (dir.exists()) {
File[] files = dir.listFiles();
for (File file : files) {
//代表文件,以及空文件夹删除
if (file.isFile() || file.listFiles().length == 0) {
file.delete();
} else {
//有文件的文件夹,递归进入删除
deleteDir(file.getPath());
}
}
}
//代表一层一层的删除
dir.delete();
}
}
望采纳,谢谢!
因为本代码采用了递归调用,若输入一个目录其中含有子目录并不能直接删除这个目录(需要再次输入其子目录)