搜索和删除目录中文件的最快方法

时间:2012-03-05 17:29:30

标签: c#

我有一个类数组,其中一个成员是文件的完整路径。我需要从目录中删除所有那些未包含在数组中的文件。通常,我使用传统的比较和删除方法。我需要知道是否有任何快速的方法来实现这一目标。 我听说可以使用Linq完成,但我对linq没有任何了解。

我的类结构如下所示。

Class ImageDetails
{

public string Title;

public Boolean CanShow;

public String PathToFile;
}

我有一个ImageDetails数组。 PathToFile包含完整路径

}

2 个答案:

答案 0 :(得分:4)

您可以使用Except()来处理:

var filesToDelete = Directory.GetFiles(Path.GetDirectoryName(yourClass.FilePath)).Except(yourClass.TheArray);

答案 1 :(得分:0)

为什么需要比较?如果您有完整的文件名,那么

File.Delete(fileName);

就是你所需要的。文件IO可能是最慢的部分,所以我认为Linq不会对性能产生太大影响。

如果文件可能不存在,请先检查该文件:

if (File.Exists(fileName))
{
    File.Delete(fileName);
}

编辑:我认为你的意思是你要删除文件,如果它不在数组中。我读了你的问题意味着该目录未包含在数组中。

尽管如此,实际的文件删除可能是最慢的部分。