1

我手头有两个任务

  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# 代码将非常有帮助。

4

3 回答 3

2

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

其他方法是再次调用GetFiles并使用except调用,如果您不需要在删除过程中忽略文件列表,这不是很有效

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

于 2013-08-28T16:12:33.023 回答
0
foreach (var file in directory.GetFiles().Except(imgFiles))
{
    file.Delete();
}
于 2013-08-28T15:55:53.060 回答
0
var filesToBeDeleted = directory.GetFiles(fileType, SearchOption.AllDirectories)
                                .Except(imgFiles).ToArray();
for (int i = filesToBeDeleted.Length; i >= 0; i--)
    filesToBeDeleted[i].Delete();
于 2013-08-28T15:58:17.107 回答