2015-07-07 2 views
0

Я пытаюсь исключить файлы, которые заканчиваются расширением «.done», нечувствительным к регистру (независимо от того, являются ли его .done, .DONE, .Done и т. Д.).Исключить файлы из списка файлов каталогов с определенным расширением

Я использую эту функцию:

Dim filesFromDownloadFolder = Directory.GetFiles(_chorusPath & ReportPaths.Download).Where(Function(name) Not name.EndsWith(".done", True)) 

, но после того, как я получил эту ошибку появляется:

The string comparison type passed in is currently not supported. Parameter name: comparisonType 

я предполагаю, что я должен вместо истинных пут StringCompariision.something, но я не уверен, какой из доступный вариант в моем случае.

ответ

1

Вы пытаетесь установить для параметра ignoreCase значение True, но единственная перегрузка, предоставляющая этот параметр, также ожидает третий параметр. Вместо этого вы устанавливаете параметр ComparisonType равным True, следовательно, ваша ошибка. Попробуйте вместо этого следующее, который будет установлен в StringComparison:

Dim filesFromDownloadFolder = Directory.GetFiles(_chorusPath & ReportPaths.Download).Where(Function(name) Not name.EndsWith(".done", StringComparison.OrdinalIgnoreCase)) 
+0

я хочу, чтобы исключить эти файлы – Arie

+0

ваш путь будет включать те, файлы я хочу получить все файлы, кроме тех, которые заканчиваются на .done (с учетом регистра независимо от того, является ли .done или .DONE или DoNe) – Arie

+0

См. мое редактирование, это будет использовать LINQ вместо того, чтобы возвращать два списка и сравнивать их. – Wibbler

-2

вы попытаться отфильтровать каталог с расширением файла, почему вы используете LINQ использовать нативный метод это слишком быстро

Directory.GetFiles Method (String, String)

EDIT

Извините за неправильную информацию я не Считайте вопрос укомплектовать, моя ошибка , но до сих пор кажется GetFiles не является правильным решением, если пользователь с помощью .NET 4 и выше, то пользователь может использовать

Directory.EnumerateFiles Method (String) Это быстрее, чем GetFiles

+0

обе тот же. Если вы скажете так, покажите мне, как использовать собственный метод для исключения .done-файлов (без чувствительности к случаю) – Arie

+0

Это приведет только к вам, файлы, которые _match_ расширение, а GetFiles сам по себе не позволяет более сложные регулярные выражения. Чтобы использовать функцию GetFiles без LINQ, вам потребуется позвонить ей один раз, чтобы получить все файлы, снова получить все .done-файлы, а затем снять diff из двух возвращенных списков. – Wibbler

Смежные вопросы