Как проверить пустая ли папка в delphi?

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

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

Как проверить пустая ли папка в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

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

от Programmer , 2 года назад

@krista 

Добрый день!

Для того чтобы проверить пуста ли папка нужно прочесть ее содержимое

Сделать это можно следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
function TargetDirIsEmpty(APath: String): Boolean;
var SearchRec: TSearchRec;
begin 
    Result := True;
    APath:= IncludeTrailingPathDelimiter(APath);
    if FindFirst(APath+ '*.*', faAnyFile, SearchRec) = 0 then
    repeat
        if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        begin
            Result := False;
            FindClose(SearchRec);
            Exit;
        end;
    until
        FindNext(SearchRec) <> 0;
    FindClose(SearchRec); 
end;

if TargetDirIsEmpty('C:\Temp') then
  ShowMessage('Папка пуста') else
  ShowMessage('Папка не пуста');

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

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

@krista 

Для проверки, является ли папка пустой в Delphi, можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
uses System.SysUtils, System.IOUtils;

function IsFolderEmpty(const FolderPath: string): Boolean;
var
  SearchRec: TSearchRec;
begin
  Result := FindFirst(TPath.Combine(FolderPath, '*.*'), faAnyFile, SearchRec) = 0;
  if Result then
  begin
    Result := not ((SearchRec.Name = '.') or (SearchRec.Name = '..'));
    if Result then
      Result := FindNext(SearchRec) <> 0;
  end;
  FindClose(SearchRec);
end;


Эта функция проверяет, есть ли в папке любые файлы или подпапки, кроме текущей и родительской папок. Если такие файлы или подпапки есть, то функция вернет False, иначе вернет True, что означает, что папка пуста. Указанный код использует System.IOUtils для работы с файловой системой.