SolveProblem
...大约 2 分钟
SolveProblem
文件类
解决由于失误操作导致Windows系统产生无限循环文件夹问题
网上的解决方案
使用Windows自带的RoboCopy 命令方式
- 先进入cmd命令行
- cd到该文件夹的上一层路径
- 然后建立一个空的文件夹,比如这里无限嵌套的文件夹名称为WrongFile,在同级目录建立一个文件夹随意命名为RFile,在cmd命令行中执行** Robocopy /MIR RFile WrongFile,**执行一段时间后,会发现无限嵌套的文件夹WrongFile已经被清空。
原理分析:
RoboCopy是一个命令行的目录复制命令。
使用命令:Robocopy /MIR source destination
其中/MIR表示镜像目录树,意思为复制子目录,包括空的子目录和删除源中不再存在的目标文件/目录。这里source 定义一个空的文件夹,将其结构完全复制到destination中,也就可以清空destination里面的所有结构。
结果
但是令人生气的是这个解决方案对我不起作用,我一运行 Robocopy /MIR RFile 123 命令就出现了无限删除文件夹的窗口,一直运行了十分钟,终于停了,但是文件夹依然存在。又去网上找啊找,找到一哥们说没事,是嵌套太深了,多运行几次RoboCopy就好了,然后又等了3个十分钟,还是没删掉。事不过三,此时我已经意识到了事情的不对。
我的解决方案
自己想着这个文件夹是由于递归拷贝产生的,那我能不能写个Java程序递归删除它呢?心动不如行动,于是敲了如下代码。
public class Main {
private static void delete(File file) {
if (file.isDirectory()) {
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (File f : listFiles) {
delete(f);
}
}
file.delete();
} else {
file.delete();
}
}
public static void main(String[] args) {
//换成你出问题文件夹的路径
//我的是E:\\Java_Projects\\tensoflow\\src\\MyNotes\\Images\\Docker下的E%5CJava_Projects%5Ctensoflow%5Csrc%5CMyNotes%5CImages%5CDocker文件夹出现了无限嵌套
File dir = new File("E:\\Java_Projects\\tensoflow\\src\\MyNotes\\Images\\Docker\\E%5CJava_Projects%5Ctensoflow%5Csrc%5CMyNotes%5CImages%5CDocker");
System.out.println("start delete...");
delete(dir);
System.out.println("delete success");
}
}
结果
不到一秒钟运行结束,文件夹删除成功。
控制台输出:
start delete...
delete success
Powered by Waline v2.15.8