.Net文件模式拾取不需要的文件(C#)

时间:2012-01-04 22:35:15

标签: c# .net io

我有一个如下命令。我发现如果我使用*.csv的文件模式,它也会选择带有.csvx扩展名的项目。也许这是8.3文件名日的回归 - 任何人都知道一种方法可以正确地返回它们,最好不要自己滚动它们?

files = (from file in Directory.EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly) select file).ToList();

4 个答案:

答案 0 :(得分:5)

只是一种解决方法,但可能已经足够好了:

var files = Directory
             .EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly)
             .Where(f => f.EndsWith(".csv"))
             .ToList();

答案 1 :(得分:3)

您可以尝试这样的事情:

var files = (from file in Directory.EnumerateFiles(directory, "*.csv", SearchOption.TopDirectoryOnly)
                         select file).Where(c => c.EndsWith(".csv")).ToList();

答案 2 :(得分:1)

您也可以使用“扩展”属性

var files = new DirectoryInfo(path).GetFiles("*.csv").Where((info) => info.Extension = ".csv")

答案 3 :(得分:1)

此行为是设计使然:

  

因为此方法使用8.3文件检查文件名   名称格式和长文件名格式,类似的搜索模式   “ 1 .txt”可能会返回意外的文件名。例如,使用   搜索模式“ 1 .txt”返回“longfilename.txt”因为   等效8.3文件名格式为“LONGFI~1.TXT”。

您必须使用其中一种解决方法。

来源:http://msdn.microsoft.com/en-us/library/wz42302f.aspx