c# 删除某个文件夹下所有空目录,解决因删除空目录后上一组成空目录没有删除的情况

网上有相关方法,但是有一个BUG,就是目录下的子目录为空,只会删除目录,不会删除父目录,应该是判断时还有子目录存在,不为空。以下是我类似方法改进后,去除这个BUG。

直接看代码

        private void button1_Click(object sender, EventArgs e)
        {
            string dir = @"D:\TestTemp";
            KillEmptyFolder(dir);

        }

        private void KillEmptyFolder(string sPath)
        {
            DirectoryInfo info = new DirectoryInfo(sPath);

            foreach (string item in Directory.GetFileSystemEntries(sPath, "*", SearchOption.AllDirectories))
            {
                if (!File.Exists(item))
                {
                    if (Directory.Exists(item))
                    {
                        string[] nFiles = Directory.GetFiles(item, "*.*", SearchOption.AllDirectories);
                        if (nFiles.Count() == 0)
                        {
                            Directory.Delete(item, true);
                        }
                    }
                }
            }

        }

  主要是判断所有文件夹及子文件夹是不是有文件,如果没有就直接删除包括子目录,循环时增加判断是否存在对应的目录,可以避免因删除目录及子目录后,前面取的文件夹列表对应元素目录实际不存了报错。

原文地址:https://www.cnblogs.com/vikimono/p/11066778.html

时间: 2024-08-01 03:07:22

c# 删除某个文件夹下所有空目录,解决因删除空目录后上一组成空目录没有删除的情况的相关文章

删除某个文件夹下的所有文件

//删除本地文件夹下保存的文件 NSFileManager *fileManager = [NSFileManager defaultManager];                     NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];                     NSString *dicrector

删除指定文件夹中除保留的文件外的所有文件批处理 删除指定文件夹下的空文件夹,包括子目录批处理

删除指定文件夹中除保留的文件外的所有文件批处理 @echo off set "ext= sln csproj" for /f "delims=" %%a in ('dir /b/s/a-d *.*') do ( set .= if /i not "%%~nxa"=="%~nx0" ( for %%i in (%ext%) do if /i "%%~xa"==".%%i" set .=.

Python批量删除指定文件夹下的指定类型的文件

Python作为一种脚本语言,其非常适合文件级的各种操作.下面的代码可以批量删除指定文件夹下的全部特定类型(CSV类型)的文件. import sys, csv , operator import os import glob for i in range(0, 20): path = "C:\\Python34\\Folder_" + str(i) for infile in glob.glob( os.path.join(path, '*.csv') ): os.remove(in

python删除指定文件夹下文件和文件夹的方法

前记 ? python删除指定文件夹下的文件,是一个常用的功能.我找了不少地方,一直没有找到合适的模版,那只好自己倒腾一个比较实用的模版了. 基本模块 ? 这里面会用到几个模块,一个是??目录下所有文件的的函数:listdir 常用的使用方法: import os filenames = os.listdir('.') print(filenames) 另外一个就是查看该目录下是否有特定的文件,这个就是name.swith()函数,具体的使用方法如下: state = any(name.ends

find命令删除当前文件夹下N天前多类文件

find . \( -name "*.gz" -o -name "*.zip" -o -name "*.cfg" \) -maxdepth 1 -mtime +2  -exec rm {} \; 说明: 删除当前文件夹(-maxdepth 1) 2天以前的(-mtime +2) 多类文件 gz zip cfg   删除 -exec rm {} \;

自动删除指定文件夹下N天前文件的批处理

@echo off if not exist d:\delFiles goto EOF rem 定义文件夹'数组'  set folders[0]=folder1 set folders[1]=folder2 set folders[2]=folder3 rem 如果D:\delFiles下改变文件夹,请修改上面'数组' set sday=-3 rem 删除D:\delFiles下的sday天前建的文件,修改天数请修改上面的sday ForFiles /P D:\delFiles /D %sda

win7基础 cmd del+*.扩展名 删除指定文件夹下的同一类型的所有文件

系统      :Windows7注意事项  :博文内容仅供参考,不可用于其他用途. 初始状态下,原文件夹内的所有文件 cmd 窗口下的指令输入 结果展示, ------------------------------------------如果您觉得博文内容有可以优化的地方,请留下评论,我会认真思考的.

win7基础 cmd del+指定文件名.扩展名 删除指定文件夹下的一个指定文件

系统      :Windows7注意事项  :博文内容仅供参考,不可用于其他用途. 指定文件夹内的初始文件, cmd 中删除 指定的文件 结果是, ------------------------------------------如果您觉得博文内容有可以优化的地方,请留下评论,我会认真思考的.

删除某文件夹下的所有文件

package cn.mldn.demo;import java.io.*;public class Test{ public static void main(String[] args) {  //封装目录  File srcFolder=new File("exam");  //递归实现  getAllJavaFilePaths(srcFolder); } public static void getAllJavaFilePaths(File Folder){  //定义文件数组