尝试删除空的文件夹,或者只删除其中的隐藏文件

时间:2016-12-04 10:26:20

标签: c# directory-structure lint

我正在尝试清理我的lightroom文件夹,并发现有时会从他们周围移动文件而留下隐藏文件。

我做了一些搜索,并且能够构建这个Frankenstein函数,但每次尝试删除一个空文件夹时,我都会收到一条错误消息,说该文件夹正在被另一个进程使用....

基本上我试图通过所有文件夹重复并删除那些空子项,或者只包含隐藏文件的文件夹。如果没有包含文件(或仅隐藏文件),则此过程应重复通过所有文件夹删除其子项,并最终删除父项。

任何帮助或建议将不胜感激!

干杯!

private static void processDirectory(string startLocation)
    {
        //For every folder in this folder, recurse into that folder and take a peek...
        foreach (var directory in Directory.GetDirectories(startLocation))
        {
            processDirectory(directory);
            //Get a handle to the directory to get files and whatnot from....
            DirectoryInfo di = new DirectoryInfo(directory);
            FileInfo[] files = di.GetFiles();

            //We want to ignore any hidden files in the directory 
            var filtered = files.Where(f => !f.Attributes.HasFlag(FileAttributes.Hidden));

            //Make sure there are no other files or directories behind this one
            if (filtered.Count() == 0 && Directory.GetDirectories(directory).Length == 0)
            {
                //Okay it's safe, delete it now.
                di.Delete();
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

好吧,如果这不是很奇怪,今天早上当我运行代码它工作得很好!?我的文件夹只被修剪成实际上有照片的文件夹,生活很美好 我要做的一件事就是将true添加到di.Delete()函数中。这是因为该功能在其中隐藏文件的文件夹上停止 我假设它与Chris上面发布的内容类似,而且一些潜在的功能仍然是从Adobe开放的。

感谢所有发布回复的人!

干杯!