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 начиная с папки расположения программы.