1

我正在使用 Directory.GetFiles(string,string) 来查找特定文件类型的所有文件。如果我有两种不同类型的文件名称相同但扩展名不同,是否可以保证填充的这些文件列表绝对匹配?

例如)

伪代码

 List1 -> getfiles(dir,filetype2)
 List2 -> getfiles(dir,filetype2)

清单 1 和清单 2 会保证完全相同的匹配文件吗?我相信它会,但想知道在任何情况下它们会有所不同吗?

正确案例

 List1[4] is "2esDSd.filetype1"
 List2[4] is "2esDSd.filetype2"

错误案例

 List1[4] is "3esDSd.filetype1"
 List2[4] is "2esDSd.filetype2"

我知道我总是可以编写另一层额外的验证或排序,因为仍然可能有不正确的输入。但是想知道是一种很好的做法,或者考虑到内部功能的工作原理,是否不需要做/验证。

4

1 回答 1

1

如果文件系统确实包含匹配的文件,您只能“保证”这一点。在这种情况下,最好确保按字母顺序获取文件名,如下所示:

伪代码

List1 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList();
List2 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList();

但是,就像我说的那样,这取决于存在的正确文件,以及您的文件过滤器(例如“*.jpg”)与目录中没有双胞胎的任何文件不匹配。

一个更强大的解决方案是只检索您想要的两种文件类型的所有文件,然后自己搜索结果之间的匹配项,如下所示:

伪代码

for each filename f1 in List1
    get matchine file name f2 in List2
    if it exists, add (f1, f2) to results

然后结果是具有匹配文件名的 2 元组列表。

于 2013-02-21T15:49:23.220 回答