我有一个如下命令。我发现如果我使用*.csv
的文件模式,它也会选择带有.csvx
扩展名的项目。也许这是8.3文件名日的回归 - 任何人都知道一种方法可以正确地返回它们,最好不要自己滚动它们?
files = (from file in Directory.EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly) select file).ToList();
答案 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”。
您必须使用其中一种解决方法。