powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поделитесь быстрым алгоритмом перебора файлов и подпапок
17 сообщений из 17, страница 1 из 1
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33338136
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть алгоритм, но он довольно корявый. Может у кого есть примерчик перебора всех файлов и папок, включая скрытые и системные?
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33338176
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Dim strFile As String
    
    strFile = Dir(OuterPath)
    Do Until strFile = ""
        Debug.Print strFile
        strFile = Dir
    Loop

...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33340498
squid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быстро это с использованием WinApi + рекурсия

см и ищи примеры по функциям

Public Declare Function APIFindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function APIFindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function APIFindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342034
http://blackbeltvb.com/dirview.htm
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342212
Anton Lukyanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно в сторону FSO посмотреть
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342261
AndreyF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Sub Main()
    Dim fso As New Scripting.FileSystemObject
    
    PrintChilds fso.GetFolder("C:\Program Files")
End Sub

Private Sub PrintChilds(ff As Scripting.Folder)
    Dim f As Scripting.File, fo As Scripting.Folder
    
    For Each f In ff.Files
        Debug.Print f.Path
    Next f
    For Each fo In ff.SubFolders
        Debug.Print fo.Path
        PrintChilds fo
    Next fo
End Sub

Скорость - примерно одинакова любыми методами Dir/FindFirst или как выше (FSO). Но так однозначно проще...
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342306
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C FSO скорость значительно уступает API. Я пробовал разные варианты и пожалуй с FindFirstFile,FindNextFile получается лучше всего. Конечно скорость заметна при значительном колличестве файлов и папок. Я тестил на ~10000 папок с ~1000000 файлов.
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342460
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyFГде-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Sub Main()
    Dim fso As New Scripting.FileSystemObject
    
    PrintChilds fso.GetFolder("C:\Program Files")
End Sub

Private Sub PrintChilds(ff As Scripting.Folder)
    Dim f As Scripting.File, fo As Scripting.Folder
    
    For Each f In ff.Files
        Debug.Print f.Path
    Next f
    For Each fo In ff.SubFolders
        Debug.Print fo.Path
        PrintChilds fo
    Next fo
End Sub

Скорость - примерно одинакова любыми методами Dir/FindFirst или как выше (FSO). Но так однозначно проще...

подскажите пожалуста какую referens надо подключить что бы это заработало?
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342667
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил пока через Dir, ничего другого не понадобилось, правда выглядит довольно криво, Dir не для этого. При выходе из рекурсии Dir начинает перебор с начала папки почему-то.
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342715
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторподскажите пожалуста какую referens надо подключить что бы это заработало? Microsoft Scripting Runtime. Неужто из кода не понятно? Но этот метод самый меленный из всех.
авторСкорость - примерно одинакова любыми методами Dir/FindFirst или как выше (FSO). Абсолютно с Вами не согласен. Попробуйте с ~10000 папок глубокой вложенности с ~1000000 файлами. Разницу между АПИ и ФСО заметно сразу.
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33342867
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp авторподскажите пожалуста какую referens надо подключить что бы это заработало? Microsoft Scripting Runtime. Неужто из кода не понятно? Но этот метод самый меленный из всех.

Спасибо
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33473017
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток всем.
Подскажите Please начинающему юзеру как эти алгоритмы работают:
второй и третий с первым все понятно, а то они оба у меня ошибки вызывают.
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33473031
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PantaloneЕсть алгоритм, но он довольно корявый. Может у кого есть примерчик перебора всех файлов и папок, включая скрытые и системные?Если есть необходимость пробегать дерево папок вручную, подобно тому как мы это делаем в експлорере, то нет надобности строить всю древовидную структуру. Можно ее перестраивать в зависимости от того в какую дирректорию заходим. К примеру если мы в корне, то читаем содержимое корня и выводим, далее мы выбираем одну из доступных директорий, для того чтоб ознакомится с его содержимым, делаем это также как делали для корня. Все будет летать, если задача у вас другай, то потестируйте fso либо с API FindXXX
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33473774
AndreyF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpC FSO скорость значительно уступает API. Я пробовал разные варианты и пожалуй с FindFirstFile,FindNextFile получается лучше всего. Конечно скорость заметна при значительном колличестве файлов и папок. Я тестил на ~10000 папок с ~1000000 файлов.

Вообще-то когда я тестил то результат был практически одинаков.

Но FSO стараюсь не использовать из-за того что несколько раз натыкался на глюки...
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33532639
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Please выложите пример перебора фаилов для:

Public Declare Function APIFindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function APIFindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function APIFindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33533028
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если использовать команду ОС
Код: plaintext
dir /s > qwe.txt
что будет быстрее с помощью ф-ций или командой?
...
Рейтинг: 0 / 0
Поделитесь быстрым алгоритмом перебора файлов и подпапок
    #33536478
Ghost_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotа если использовать команду ОС
Код: plaintext
dir /s > qwe.txt
что будет быстрее с помощью ф-ций или командой?

нет не поканает
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поделитесь быстрым алгоритмом перебора файлов и подпапок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]