删除所有没有特定扩展名的文件夹和子目录

菲特

我正在使用此解决方案删除某个路径中的所有空文件夹和子目录:

static void Main(string[] args)
{
    processDirectory(@"c:\temp");
}

private static void processDirectory(string startLocation)
{
    foreach (var directory in Directory.GetDirectories(startLocation))
    {
        processDirectory(directory);
        if (Directory.GetFiles(directory).Length == 0 && 
            Directory.GetDirectories(directory).Length == 0)
        {
            Directory.Delete(directory, false);
        }
    }
}

完美运作。但我要删除所有空文件夹以及不为空但也不包含带有.dvr扩展名的文件的文件夹

例如,我的文件夹包含以下文件:

一个日志

博客

录像机

达特

因此,该文件夹无法删除,因为它包含带有dvr扩展名的文件。

我该如何过滤?(我使用的是GTK#,但我相信C#代码会起作用,因为此解决方案是C#代码)

雷内·沃格特

不幸的是,错误处理是基于IO操作的非常例外。如果目录不为空,则Directory.Delete会引发IOException。因此,您必须手动删除文件:

private static bool processDirectory(string startLocation)
{
    bool result = true;
    foreach (var directory in Directory.GetDirectories(startLocation))
    {
        bool directoryResult = processDirectory(directory);
        result &= directoryResult;

        if (Directory.GetFiles(directory, "*.dvr").Any())
        {
             result = false;
             continue;
        }

        foreach(var file in Directory.GetFiles(directory))
        {
            try
            {
               File.Delete(file);
            }
            catch(IOException)
            {
               // error handling
               result = directoryResult = false;
            }
        }

        if (!directoryResult) continue;
        try
        {
            Directory.Delete(directory, false);
        }
        catch(IOException)
        {
            // error handling
            result = false;
        }
    }

    return result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在特定目录及其子目录中,找到所有以 .tmp 扩展名结尾的文件夹

递归遍历所有子目录,如果存在具有特定扩展名的文件,则在该文件夹中运行一次命令

R:计算不同子目录/文件夹中具有特定扩展名的文件数

如何从特定给定的目录和所有子目录中搜索具有特定扩展名的文件

从所有子目录复制具有特定扩展名的所有文件

显示所有没有任何子目录的文件夹

如何在Java ..中基于特定文件的扩展名过滤文件夹(目录和子目录)?

bash从特定文件扩展名在文件夹中创建子目录

如何在多个子目录中找到相同扩展名的所有文件并使用 python 将它们移动到单独的文件夹?

使用 PowerShell 重命名给定目录和子文件夹中没有扩展名的所有文件

如何删除特定文件夹中具有特定扩展名的所有文件?

如何忽略一个目录及其子目录中的特定扩展名的所有文件?

如何删除文件夹中所有具有特定扩展名的文件?

删除特定文件夹的文件和子目录

将具有特定扩展名的文件从目录移动到 PHP 中的子目录

Git会忽略除特定扩展名之外的所有文件,即使在子目录下也是如此

从所有子目录删除文件,保留一个子目录以外的文件夹结构

删除所有子文件夹和文件,但父文件夹中的特定扩展名除外

使用git查看子目录中与特定文件扩展名相关的所有日志

sftp:上传文件夹中包含的所有文件,目录和子目录

在具有特定扩展名的所有文件夹和子文件夹中运行命令

查找和删除文件夹及其子文件夹中所有不带扩展名的文件

重命名所有子目录中的文件和文件夹以删除字符

将子目录中的文件复制到只有 1 个文件扩展名的临时文件夹

如何将具有特定文件扩展名的所有文件从子目录移动到单个目录

如何删除大树中特定命名文件夹中具有特定扩展名的所有文件?

Windows 7-递归删除具有特定扩展名的所有文件+空文件夹

有没有一种方法可以快速更改文件夹中所有文件的所有文件扩展名?

Php:将扩展名附加到文件夹中没有扩展名的所有文件