2016-08-28 4 views
0

Может ли кто-нибудь сказать мне, как я могу найти файлы * .txt внутри данной папки, внутри которой есть подкадры в структуре 12345 \ 3\ 128 \ txt \ 100.txt, основная папка может содержать другие подпапки или txt файлы, но я хочу только получить файлы txt, которые находятся во вложенных папках формата 12345 \ 3\ 128 \ txt \ 100.txt. то есть текстовые файлы внутри все тхт папкиПоиск файлов txt внутри данной папки с подпапками?

Я попытался это:

Dim txtFilesArray As String() = Directory.GetFiles(targetDirectory, "*.txt", SearchOption.AllDirectories) 

Но он получает все текстовые файлы?

ответ

1
Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories) 
      .Where(Function(f) f Like "*\#*\#*\#*\txt\#*.txt") 

где # соответствует любой цифре от 0 до 9 и * спичек любые 0 или более символов

или медленнее RegEx версии будет примерно

Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories) 
      .Where(Function(f) RegEx.IsMatch(f, ".*\\\d+\\\d+\\\d+\\txt\\\\d+\.txt")) 

For Each txtFile In txtFiles 
    '... 
Next 
+0

Имена папок в структуре ** 12345 \ 3\ 128 \ txt \ 100.txt ** могут отличаться, как и первая папка вместо пятизначного имени, это может быть шестизначное имя или четырехзначное имя и то же самое для всех подпапок хорошо, я могу использовать как '(\ d +) \ (\ d +) \ (\ d +) \ txt \ (\ d +). txt' вместо' * #### \ #### # \ ### \ txt \ ###. txt' с тем же кодом? –

+0

@Don_B оператор 'Like' не поддерживает это, но я обновил свой ответ, чтобы соответствовать цифре и любому количеству символов после нее' # * '. Я не уверен, будет ли работать версия RegEx. – Slai

+0

Что соответствует символу дефиса «-» в 'Like'? –

0

Это будет возвращать все файлы, но те, которые содержатся в path:

Dim path = "C:\" 
Dim di As New DirectoryInfo(path) 
Dim files = di _ 
    .GetFiles("*.txt", SearchOption.AllDirectories) _ 
    .Where(Function(info) info.DirectoryName <> path) _ 
    .Select(function(info) info.FullName) _ 
    .ToArray() 
Смежные вопросы