删除文件夹遇见错误0x80070091目录不是空的

2024-09-06 00:36

本文主要是介绍删除文件夹遇见错误0x80070091目录不是空的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用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解决了,也蛮好。特此记录一下。

 

这篇关于删除文件夹遇见错误0x80070091目录不是空的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140504

相关文章

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

SQL2005 性能监视器计数器错误解决方法

【系统环境】 windows 2003 +sql2005 【问题状况】 用户在不正当删除SQL2005后会造成SQL2005 性能监视器计数器错误,如下图 【解决办法】 1、在 “开始” --> “运行”中输入 regedit,开启注册表编辑器,定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVer