2015-08-15 70 views
0

我有一个目录struture像这样:如何删除1次命中子目录中的所有文件永久

C:\年\月\日\小时\分钟

的“年”根向下都可以有多个子目录

从“Day”子根开始,我希望删除子子目录内的所有文件和目录。

当我说永久删除,我的意思是不发送到回收站。

我发现他的代码,将做到这一点:

using Microsoft.VisualBasic.FileIO: 

var files = GetAllFiles(suggested); 
foreach (var file in files) 
{  
    FileSystem.DeleteFile(file, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException);`          
} 

FileSystem.DeleteDirectory(suggested, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException); 

    private static IEnumerable<string> GetAllFiles(string rootDirectory) 
    { 
     foreach (var file in Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories)) 
     { 
      yield return file; 
     } 
    } 

我很想做的是省略GetFilesMethod(路径),做这样的事情:

FileSystem.DeleteDirectory(suggested, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException, recursive=true, all contents); 

显然,“递归= true,所有内容都是SUDO代码。

感谢

回答

3

首先,我建议你指责慢LINQ前你做一些基准。

其次,你可以使用System.IO.Directory.Delete方法实现你所需要的(递归文件的永久删除):

删除指定的目录,如果所指出的,在目录中的所有子目录和文件。

使用方法如下:

Directory.Delete(suggested, true); 
+0

完全正确它:)。不要误解我的LINQ。这是优雅的,节省代码写作。在我使用密集处理的情况下,我发现它对我的需求很慢 - 但仅限于我的特定需求。谢谢 –

相关问题