Delphi. Рекурсивный обход каталога файлов Windows при помощи SYSTEM.IOUTILS

Задача тривиальная, но всё же. Зачастую обходы делают при помощи SearchRecord, но стало интересным сделать это при помощи модуля System.IOUtils Получилось так…

68

Каталоги файлов и папок очень похожи по структуре на дерево или граф. Соответственно можно применить один из методов обхода для одной из этих сущностей. Я уже писал об обходе дерева в другой статье.

За основу я взял следующий рекурсивный код обхода дерева

Если провести аналогию для файлов и папок, то получится так…

Я использовал TStringDynArray так как эта структура быстро работает с числом элементов больше 15000, чего не скажешь о TStringList. И если в нашем каталоге большое число элементов, например C:Windows то можно и не дождаться пока он заполнится если использовать в качестве хранилища TStringList

А вот пример использования в другом модуле

Примечание

Есть также закомментированный кусок кода следующего вида

Он собирает все файлы и каталоги из выбранной директории, но это не обход, а просто сбор того что есть в каталоге.

 

by Stanislav_Panteleev

Добавить комментарий