Программирование на Delphi и не только Как подсчитать полный размер папки? | Программирование на Delphi и не только

Delphi FAQ >> Файлы и каталоги

Эта функция на языке Delphi рекурсивно подсчитывает полный размер указаннолй папки (включая размер подкаталогов).

//возвращает размер папки в байтах
function GetDirFullSize(aPath: String): Int64;
var   sr: TSearchRec;

  tPath: String;

  sum: Int64;

begin


  //сначала размер принимаем равным нолю   sum := 0;

  //добавляем завершающий слэш, если нужно

  tPath := IncludeTrailingBackSlash(aPath);

  //перебираем содержимое каталога


  if FindFirst(tPath + '*.*', faAnyFile, sr) = 0 then
  begin
    try
      repeat
        //если это текущий или родительский каталог - не трогаем
        if (sr.Name = '.') or (sr.Name = '..') then           Continue;

        //если это каталог - рекурсивно прибавляем его размер к сумме


        if (sr.Attr and faDirectory) 0 then
        begin           sum := sum + GetDirFullSize(tPath + sr.Name);           Continue;

        end;


        //если файл - то добавляем его размер к сумме         sum := sum + (sr.FindData.nFileSizeHigh shl 32) + sr.FindData.nFileSizeLow;

      until FindNext(sr) 0;


    finally
      //возвращаем результат и закрываем поиск       Result := sum;       FindClose(sr);

    end;


  end;
end;

Если вычислением размера папки еще можно заняться самостоятельно, то обслуживание видеонаблюдения точно стоит поручить профессионалам .