Карта сайтаСсылкиКонтакты

Как узнать размер заданной директории Windows

PDF Печать
Статьи

Есть функция для определения размера папки (не ищет скрытые, системные и архивные файлы, а только нормальные файлы).

Используется рекурсивный алгоритм, чтобы также просматривать все подкаталоги. Нужно передать только начальный каталог как параметр:


var
   DirBytes : integer;

function FolderSize(Dir: string): integer;
var
   SearchRec : TSearchRec;
   Separator : string;
begin
   Result:= 0;
   if Copy(Dir, Length(Dir), 1)= '\' then
     Separator := ''
   else
     Separator := '\';

   if FindFirst(Dir + Separator + '*.*', faAnyFile, SearchRec) = 0 then begin
     if FileExists(Dir + Separator + SearchRec.Name) then begin
       DirBytes := DirBytes + SearchRec.Size;
     end else if DirectoryExists(Dir + Separator + SearchRec.Name) then begin
       if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin
         FolderSize(Dir + Separator + SearchRec.Name) ;
       end;
     end;
     while FindNext(SearchRec) = 0 do begin
       if FileExists(Dir + Separator + SearchRec.Name) then begin
         DirBytes := DirBytes + SearchRec.Size;
       end else if DirectoryExists(Dir + Separator + SearchRec.Name) then
       begin
         if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin
           FolderSize(Dir + Separator + SearchRec.Name) ;
         end;
       end;
     end;
   end;
   FindClose(SearchRec) ;
   Result:= DirBytes;
end;

 

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


Защитный код
Обновить