Как обрабатывать все файлы в папке и подпапках в delphi?

Пользователь

от raina , в категории: Другие , год назад

Как обрабатывать все файлы в папке и подпапках в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jaren , год назад

@raina 

Для обработки всех файлов в папке и ее подпапках в Delphi вы можете использовать рекурсивную процедуру, которая будет проходить через все подпапки и вызывать себя для каждой из них. В каждой папке вы можете перечислить все файлы, используя функцию FindFirst и FindNext, и обработать каждый из них.


Например, следующий код демонстрирует рекурсивную процедуру, которая выводит список всех файлов в папке и ее подпапках:

 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
29
30
31
procedure ProcessFiles(const AFolder: string);
var
  SR: TSearchRec;
begin
  // Ищем первый файл в папке
  if FindFirst(AFolder + '*.*', faAnyFile, SR) = 0 then
  begin
    try
      repeat
        // Игнорируем папки "." и ".."
        if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
          if (SR.Attr and faDirectory) = faDirectory then
          begin
            // Если найдена подпапка, вызываем процедуру для ее обработки
            ProcessFiles(AFolder + '' + SR.Name);
          end
          else
          begin
            // Обрабатываем файл
            // ...
            // Выводим имя файла
            Writeln(AFolder + '' + SR.Name);
          end;
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;


Чтобы использовать эту процедуру, просто вызовите ее, передав название папки, которую вы хотите обработать:

1
ProcessFiles('C:MyFolder');


Эта процедура будет обрабатывать все файлы в папке "C:MyFolder" и ее подпапках, выводя имя каждого файла на экран. Вы можете изменить код, чтобы обрабатывать файлы по-разному, в зависимости от ваших потребностей.