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

本文关键字:文件 列表 删除 | 更新日期: 2023-09-27 18:29:26

我手头有两项任务

  1. 从文件夹中获取10个最新文件,比如C:'Temp
  2. 删除任何其他文件夹和文件

我使用下面的代码得到了第一个项目,感谢我们在Stack Overflow中的朋友。

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

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

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

如果你只需要删除文件,我建议你只得到要删除的文件的列表,所以你可以使用Skip而不是Take

其他人正在使用Except调用再次调用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
foreach (var file in directory.GetFiles().Except(imgFiles))
{
    file.Delete();
}
var filesToBeDeleted = directory.GetFiles(fileType, SearchOption.AllDirectories)
                                .Except(imgFiles).ToArray();
for (int i = filesToBeDeleted.Length; i >= 0; i--)
    filesToBeDeleted[i].Delete();