Dale 2012 Ответов: 4

Поиск Нескольких Расширений Файлов?


Через этот сайт я выяснил свою недавнюю проблему при попытке сканирования на наличие расширений файлов, таких как"*. txt", но я не могу понять, как сканировать несколько типов файлов, таких как". txt "и". exe " одновременно?

Код, который работает для одного расширения файла одновременно, таков::
dim FExtension as string = "*.txt"
 For Each file1 In IO.Directory.GetFiles(dir, FExtension)


Как я могу добавить?
dim FExtension as string = "*.txt" and '*.exe" and "*.sys" 

и так далее?

Заранее благодарю вас за вашу помощь! :)

4 Ответов

Рейтинг:
2

Dalek Dave

Ты не можешь.

Метод GetFiles принимает только один параметр в перегрузке.

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


Рейтинг:
2

Wayne Gaylard

Вы можете использовать LinQ для извлечения всех файлов с несколькими расширениями, как это:-

var files = Directory.GetFiles(@"C:\yourPath", "*.*", SearchOption.AllDirectories).
                Where(s => s.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) || s.EndsWith(".doc", StringComparison.OrdinalIgnoreCase));


Просто имейте в виду, что исходный запрос вернет все файлы в вашем пути, поэтому, если вы передадите, скажем, C:\, вы начнете получать проблемы с производительностью.


Рейтинг:
2

Member 12614308

Dim supportedExtensions As String = "*.zip,*.aaa,*.bbb,*.ccc,*.ddd"
Dim files As String() = Directory.GetFiles(romPath, "*.*", SearchOption.AllDirectories)
Array.Sort(files)

For Each fi As String In files
 If supportedExtensions.Contains(Path.GetExtension(fi)) Then
 ...
 End If
Next


Richard MacCutchan

Пожалуйста, не публикуйте старые вопросы; этому почти 5 лет.

Рейтинг:
18

ledtech3

Я бы попытался рекурсировать через расширения файлов что-то вроде этого.
Имейте в виду, что вам потребуется некоторое время, чтобы вернуть всю информацию даже для 1 расширения файла, если вы выберете корневое начальное местоположение.

Dim FExtension1 As String = "*.txt"
Dim FExtension2 As String = "*.exe"
Dim FExtension3 As String = "*.sys"

For Each file1 In IO.Directory.GetFiles(Dir, FExtension1)
    ' add to list box or append to text box or a Datagridview
Next

For Each file1 In IO.Directory.GetFiles(Dir, FExtension2)
    ' add to list box or append to text box or a Datagridview
Next

For Each file1 In IO.Directory.GetFiles(Dir, FExtension3)
    ' add to list box or append to text box or a Datagridview
Next


Dale 2012

СПАСИБО ВАМ ОООООООЧЕНЬ МНОГО ЭТО РАБОТАЕТ!!!!! да!!!