Шаблон файла .Net выбирает ненужные файлы (C #) - PullRequest
6 голосов
/ 05 января 2012

У меня есть команда, как показано ниже. Я нахожу, если я использую шаблон файла *.csv, он также выбирает элементы с расширением .csvx. Может быть, это возврат к 8.3 дням с именами файлов - кто-нибудь знает способ, который вернул бы их должным образом, предпочтительно, без прокрутки нашего собственного?

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

Ответы [ 4 ]

5 голосов
/ 05 января 2012

Просто обходной путь, но может быть достаточно хорошим:

var files = Directory
             .EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly)
             .Where(f => f.EndsWith(".csv"))
             .ToList();
3 голосов
/ 05 января 2012

Вы можете попробовать что-то вроде этого:

var files = (from file in Directory.EnumerateFiles(directory, "*.csv", SearchOption.TopDirectoryOnly)
                         select file).Where(c => c.EndsWith(".csv")).ToList();
1 голос
/ 05 января 2012

Такое поведение предусмотрено:

Поскольку этот метод проверяет имена файлов как с файлом 8.3 формат имени и формат длинного имени файла, шаблон поиска похож на « 1 .txt» может возвращать неожиданные имена файлов. Например, используя шаблон поиска " 1 .txt" возвращает "longfilename.txt", потому что эквивалентный 8.3 формат имени файла - "LONGFI ~ 1.TXT".

Вам придется использовать один из обходных путей.

Источник: http://msdn.microsoft.com/en-us/library/wz42302f.aspx

1 голос
/ 05 января 2012

Вы также можете использовать свойство "Extension"

var files = new DirectoryInfo(path).GetFiles("*.csv").Where((info) => info.Extension = ".csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...