2013-11-15 3 views
0

Прямо на вопрос ... У меня есть файлы, такие как текстовые документы с расширением (.doc) и его соответствующие примеры файлов, начиная с (.sample)Фильтрация файлов из каталога vb.net

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

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

Может кто-нибудь сказать мне, как я могу фильтровать эти файлы при загрузке их?

Это то, что я пытаюсь сделать:

Dim files = Array.FindAll(Directory.GetFiles(mydir), Function(x) (Not x.StartsWith(".sample"))) 

Это мой каталог состоит из файлов, как было сказано выше:

enter image description here

+1

Можете ли вы опубликовать некоторые примеры имен файлов вы используете для уточнения? – GregHNZ

+0

@ GregHNZ-Я обновил его, пожалуйста, проверьте – coder

ответ

1

Метод GetFiles возвращает имена файлов с пути, Вы указали включая.

Так что, если ваши файлы находятся в папке C:\working\, ваша mydir переменная будет содержать "C:\working\" и все результаты GetFiles будет что-то вроде

"C:\working\.sample_filename.doc" 
"C:\working\123797.doc" 

Так что ваш x.StartsWith всегда будет возвращать ложь, потому что х всегда начинается с C:\

Попробуйте это:

Dim files = Array.FindAll(Directory.GetFiles(mydir), Function(x) (Not x.StartsWith(mydir & ".sample"))) 

Примечание: предполагается, что ваша mydir переменная заканчивается символом \. Если нет, добавьте его в конкатенацию внутри функции.

1

Как вы его используете, все файлы извлекаются (оплачиваются все вычислительные затраты), а затем они фильтруются.

Как указано в статье this, вы можете использовать шаблон поиска непосредственно в поиске файлов из вашей файловой системы.

Я полагаю, вы могли бы сделать что-то подобное:

Dim files = Directory.GetFiles(mydir,".doc*") 

Если вы дали пример имен файлов, возможно, я хотел бы дать вам правильный фильтр применять слишком.

Надеюсь, я помог!

+0

Этот ответ намного лучше, чем получение всех файлов, а затем их фильтрацию, так как он делает все сразу. – Ric

0

Попробуйте это,

Dim files = Array.FindAll(Directory.GetFiles(mydir), Function(x) (Not Path.GetFileName(x).StartsWith(".sample"))) 
Смежные вопросы