如何删除所有文件/文件夹,但将根文件夹保留在C#中

野景

我写了一些代码以递归方式删除.Net中的所有文件/文件夹,并且它可以工作,但是我想保留根文件夹。有没有办法修改文件夹删除条件(Directory.GetFiles(sPath).Length == 0 && Directory.GetDirectories(sPath).Length == 0)以知道它是根文件夹,即使没有文件也不会删除它/根目录还剩下文件夹?

void CleanupFiles(String sPath, int iDayDelAge)
{
    if (iDayDelAge != 0) // enabled?
    {
        // Check for aged files to remove
        foreach (String file in Directory.GetFiles(sPath))
        {
            FileInfo fi = new FileInfo(file);
            if (fi.LastWriteTime < DateTime.Now.AddDays(iDayDelAge * -1))  // overdue?
            {
                fi.Delete();
            }
        }

        // Recursively search next subfolder if available
        foreach (String subfolder in Directory.GetDirectories(sPath))
        {
            CleanupFiles(subfolder, iDayDelAge);
        }

        // Remove empty folder
        if (Directory.GetFiles(sPath).Length == 0 && Directory.GetDirectories(sPath).Length == 0)
        {
            Directory.Delete(sPath);
        }
    }
}
保罗·阿尔维斯

稍微更改代码。添加一个新的参数根,并在递归调用中将其传递为false。

static void Main(string[] args)
{
    CleanupFiles(xxx, xxx, true);
}

void CleanupFiles(String sPath, int iDayDelAge, bool root)
{
    if (iDayDelAge != 0) // enabled?
    {
        // Check for aged files to remove
        foreach (String file in Directory.GetFiles(sPath))
        {
            FileInfo fi = new FileInfo(file);
            if (fi.LastWriteTime < DateTime.Now.AddDays(iDayDelAge * -1))  // overdue?
            {
                fi.Delete();
            }
        }

        // Recursively search next subfolder if available
        foreach (String subfolder in Directory.GetDirectories(sPath))
        {
            CleanupFiles(subfolder, iDayDelAge, false);
        }

        // Remove empty folder
        if (Directory.GetFiles(sPath).Length == 0 && Directory.GetDirectories(sPath).Length == 0 && !root)
        {
            Directory.Delete(sPath);
        }
    }
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除当前目录中的所有文件,但将文件保留在子文件夹中

如何删除一个文件夹,但将所有子文件夹和文件保留在一个git分支中?

删除所有文件夹但将所有文件保留在一个文件夹中的程序/脚本

Makefile:自动编译所有c文件,将.o文件保留在单独的文件夹中

删除给定文件夹中的文件,但将文件保留在子文件夹中

删除给定文件夹中的文件,但将文件保留在子文件夹中

删除子文件夹,但将文件保留在Windows中以保存Google照片

如何将我所有的django应用程序保留在特定文件夹中

杂音:将邮件保存到其他文件夹,但保留在该文件夹中

grunt uglify将缩小文件保留在与src相同的文件夹中

R CMD构建将已编译的.o文件保留在src文件夹中

将ProFTPD用户保留在其主文件夹中

将子文件夹的名称保留在列表中

有没有办法将文件夹保留在其目录中,但仍使其与Dropbox同步?

如何将上传图像保留在Public / Storage中的post文件夹中

如何最好地删除文件夹及其子文件夹中的所有文件

如何从文件夹中删除所有文件?

如何删除文件夹XXX中的所有文件

如何删除某个文件夹中的所有文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

从解决方案资源管理器中删除解决方案文件夹中在 TFS 中保留在团队中的文件夹

如何删除Linux中除少数提到的文件夹以外的所有文件夹

如何使用python删除文件夹中的所有文件夹?

删除文件夹中的所有文件和文件夹,以结尾的文件和文件夹为准

如何删除文件夹中的所有目录

将.git文件夹保留在保管箱之外

将/ etc文件夹保留在远程服务器上

将nginx root设置为公用文件夹,同时将父目录名称保留在URL中

删除保留所有内容的父文件夹

TOP 榜单

热门标签

归档