2012-03-05 71 views
1

我有一个类的数组,其中一个成员是文件的完整路径。我需要删除数组中未包含的所有文件。按惯例,我正在使用传统的比较和删除方法。我需要知道是否有任何快速的方法来完成这一点。 我听说可以使用Linq完成,但是我没有关于linq的知识。在目录中搜索和删除文件的最快方法

我的类结构如下所示。我有一个ImageDetails的数组。我有一个ImageDetails的数组。该PathToFile包含完整路径

}

+0

for循环怎么样? – loyalpenguin 2012-03-05 17:32:01

+1

@RowlandShaw我想OP希望删除目录中的所有* other *文件(但不是数组中的那些文件) – 2012-03-05 17:32:03

+1

您的'convential比较和删除'有什么问题? – 2012-03-05 17:36:34

回答

4

可以使用除()来处理这个问题:

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

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

File.Delete(fileName); 

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

如果该文件可能不存在,然后检查,首先:

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

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

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

相关问题