用java代码转移文件夹的时候发生了一点错误,导致递归生成了很多文件夹,删除文件夹的时候遇见错误0x80070091目录不是空的

有点恐慌,不会被我搞坏了吧。

一开始以为是权限问题,用命令"rd /s /q xxx"强删也不行。重启电脑再删除还是报这个错误。

搜了一下,看见有说往最后一个文件夹放一个txt文件,再删除就可以了。

用java程序放了一个(代码星火写的)

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        File rootDir = new File("D:/aaa");
        File lastEmptyFolder = findLastEmptyFolder(rootDir);
        if (lastEmptyFolder != null) {
            File testFile = new File(lastEmptyFolder, "test.txt");
            try {
                if (testFile.createNewFile()) {
                    System.out.println("test.txt 文件已创建在:" + testFile.getAbsolutePath());
                } else {
                    System.out.println("无法创建 test.txt 文件。");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("未找到空文件夹。");
        }
    }

    private static File findLastEmptyFolder(File dir) {
        File[] files = dir.listFiles();
        if (files == null || files.length == 0) {
            return dir; // 如果当前目录为空,则返回当前目录
        }
        File lastEmptyFolder = null;
        for (File file : files) {
            if (file.isDirectory()) {
                lastEmptyFolder = findLastEmptyFolder(file); // 递归查找子目录
                if (lastEmptyFolder != null) {
                    break; // 一旦找到空文件夹,立即停止搜索
                }
            }
        }
        return lastEmptyFolder;
    }
}

尽管有了txt文件,再删除还是报这个错误

 

本着不屈不饶的精神,然后问了一下星火怎么解决这个问题

星火说,这还不简单,你递归删除呗

然后啪的一下给了我python代码

我很倔强,让它换成java了

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DeleteFolder {
    public static void main(String[] args) {
        String folderPath = "your_folder_path"; // 替换为你要删除的文件夹路径
        deleteFolderRecursively(new File(folderPath));
    }

    private static void deleteFolderRecursively(File folder) {
        if (folder.isDirectory()) {
            for (File file : folder.listFiles()) {
                deleteFolderRecursively(file);
            }
        }
        try {
            Files.delete(folder.toPath());
            System.out.println("已成功删除:" + folder.getAbsolutePath());
        } catch (IOException e) {
            System.err.println("删除文件或文件夹时出错:" + folder.getAbsolutePath() + " - " + e.getMessage());
        }
    }
}

调用了一下,会报错,赶紧停掉

不甘心再调,还是报错

我想着到底删掉了一些文件夹没有

给代码里加了数字,看了一下,确实是有在删除的

在给最后一个空文件夹建txt文件的时候就看到了我的文件夹数量太多了 1000+

最后多调用了几次递归删除,报错不管它,然后就删掉了

这叫毒药附近就有解药么,哈哈

因为是特殊的断网环境,所以不能用别的软件。能用java解决了,也蛮好。特此记录一下。

 

09-06 08:39