Использование функции GetFiles для захвата нескольких типов расширений файлов - PullRequest
0 голосов
/ 21 марта 2019

Есть функция в VB, которая требует, чтобы я получил все файлы с расширениями .pdf и .rtf. При попытке включить второй параметр я понял, что он не примет второй аргумент.

Есть простой способ сделать это до сих пор?

Dim s() As String = System.IO.Directory.GetFiles(Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\"), "*.pdf")

ошибка:

System.InvalidCastException: 'Conversion from string "*.rtf" to type 'Integer' is not valid.'

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Не беспокойтесь о перегрузке GetFiles шаблоном поиска. Просто выполните фильтрацию с помощью простого LINQ

' an array of the extensions
Dim extensions = {".pdf", ".rtf"}
' the path to search
Dim path = Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\")
' get only files in the path
Dim allFileNames = Directory.GetFiles(path)
' get files in the path and its subdirectories
'Dim allFileNames = Directory.GetFiles(path:=path, searchOption:=SearchOption.AllDirectories)
' get the filenames which have any of the extensions in the array above
Dim filteredFileNames = allFileNames.Where(Function(fn) extensions.Contains(System.IO.Path.GetExtension(fn)))
0 голосов
/ 21 марта 2019

У меня есть только два типа файлов в каталоге (из которых мне нужны все вышеперечисленные), поэтому простым решением было бы удалить параметр в функции GetFiles, который предписывает просто .pdf.

Dim s() As String = System.IO.Directory.GetFiles(Server.MapPath("PrintableForms.aspx").Replace("PrintableForms.aspx", "Forums\"))

Не лучшее долгосрочное решение, но оно работает для того, что мне нужно сейчас.

...