FileEnum
Данный модуль представляет собой обработчик цикла for..in по файловой системе.
Назначение данного модуля — заменить функции FindFirst..FindNext более удобным циклом for..in. Кроме того реализован рекурсивный поиск в поддиректориях.
Подсоединив модуль к проекту, можно осуществлять поиск файлов таким образом:
1 2 3 4 5 6 7 8 9 | F: TFileInfo; begin // для поиска файлов только в заданной директории for F in SearchFiles('C:\Windows', '*.*') do Memo.Lines.Add(F.FileName); // для поиска файлов в поддиректориях for F in SearchFilesRecursive('C:\Windows', '*', faAllTypes - faDirectory) do Memo.Lines.Add(F.FileName); |
Класс TFileInfo заменяет заполнение структуры TSearchRec, как это делают FindFirst/FindNext, что должно дать прирост в производительности. Нужные свойства извлекаются из _WIN32_FIND_DATA напрямую при непосредственном запросе к нужному свойству. Предоставляются все аналогичные имеющимся в TSearchRec свойства, а также много дополнительных, сильно облегчающих работу с файловой системой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // Атрибуты файла property Attributes: Cardinal read GetAttributes; // Время создания файла property CreationTime: TDateTime read GetCreationTime; // Полное имя файла (включая путь) property FileName: string read GetFileName; // Время последнего доступа к файлу property LastAccesTime: TDateTime read GetLastAccesTime; // Время последней записи в файл property LastWriteTime: TDateTime read GetLastWriteTime; // Только имя файла (без пути) property Name: string read GetName; // Имя файла без пути и расширения property NameWithoutExt: string read GetNameWithoutExt; // Короткое имя файла в формате 8.3 (MS DOS) property NameDOS: string read GetNameDOS; // Путь к файлу property Path: string read GetPath; // Относительный путь к файлу (за основу берется путь поиска) property RelativePath: string read GetRelativePath; // Размер файла property Size: Int64 read GetSize; // Время создания файла (для совместимости с TSearchRec) property Time: Integer read GetTime; // Предоставляет прямой доступ к структуре _WIN32_FIND_DATA, // чтобы получить доступ к дополнительным данным, написания хелперов, и т.п. property FindData: TWin32FindData read FFindData; |
Также модуль содержит константы для всех типов файлов, существующих в современных версиях Windows.
Скачать FileEnum 1.1 (4 КБ)
Также доступно на CodeCentral.
Примеры использования:
- delhist.zip (598 байт) – рекурсивное удаление папок резервных копий IDE Delphi начиная с папки расположения программы.