我有一个类数组,其中一个成员是文件的完整路径。我需要从目录中删除所有那些未包含在数组中的文件。通常,我使用传统的比较和删除方法。我需要知道是否有任何快速的方法来实现这一目标。 我听说可以使用Linq完成,但我对linq没有任何了解。
我的类结构如下所示。
Class ImageDetails
{
public string Title;
public Boolean CanShow;
public String PathToFile;
}
我有一个ImageDetails数组。 PathToFile包含完整路径
}
答案 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);
}
编辑:我认为你的意思是你要删除文件,如果它不在数组中。我读了你的问题意味着该目录未包含在数组中。
尽管如此,实际的文件删除可能是最慢的部分。