跳至主要內容

SolveProblem

TenSoFlow...大约 2 分钟计算机问题计算机问题

SolveProblem

文件类

解决由于失误操作导致Windows系统产生无限循环文件夹问题

网上的解决方案

使用Windows自带的RoboCopy 命令方式

  1. 先进入cmd命令行
  2. cd到该文件夹的上一层路径
  3. 然后建立一个空的文件夹,比如这里无限嵌套的文件夹名称为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