删除列表中除文件和目录之外的所有文件和目录

时间:2013-08-28 15:53:16

标签: c# .net delete-file

我手头有两项任务

  1. 从文件夹中获取10个最新文件,例如C:\Temp
  2. 删除所有其他文件夹和文件。
  3. 我使用下面的代码得到了第一个项目,感谢Stack Overflow中的朋友。

    var imgFiles = (from f in directory.GetFiles(fileType,SearchOption.AllDirectories)
                                orderby f.LastWriteTime descending
                                select f).Take(numberOfFilesToFetch).ToArray();
    

    我需要点 2的帮助。一些示例C#代码将非常有用。

3 个答案:

答案 0 :(得分:2)

如果您只需要删除我建议的文件,您只能获取要删除的文件列表,那么您可以使用跳过而不是获取

其他aproach再次使用取消调用 GetFiles ,如果您不需要在删除过程中忽略的文件列表,则效率不高

var filesToBeDeleted = (from f in Directory.GetFiles(fileType,SearchOption.AllDirectories)
                            orderby f.LastWriteTime descending
                            select f).Skip(numberOfFilesToFetch).ToArray();

foreach (var file in filesToBeDeleted)
{
    file.Delete();
}

string [] subdirectoryEntries = Directory.GetDirectories("c:\\temp");

foreach(string dir in subdirectoryEntries)
{
    Directory.Delete(dir) ;
}

我建议你为删除操作添加一个try,catch

答案 1 :(得分:0)

foreach (var file in directory.GetFiles().Except(imgFiles))
{
    file.Delete();
}

答案 2 :(得分:0)

var filesToBeDeleted = directory.GetFiles(fileType, SearchOption.AllDirectories)
                                .Except(imgFiles).ToArray();
for (int i = filesToBeDeleted.Length; i >= 0; i--)
    filesToBeDeleted[i].Delete();