Borland C++ Builder VCL FAQ - Как узнать размер папки?
ОГЛАВЛЕНИЕ
Страница 76 из 96
Как узнать размер папки?
Для получения размера папки со всеми ее подпапками можно воспользоваться следующей функцией:void FolderSize(AnsiString Folder,int &Size,int &fCount,int &folCount)
{
//Функция записывает в параметры Size - размер папки в байтах
//fCount - общее количество файлов в папке
//folCount - общее количество подпапок в папке
TSearchRec SR;
//Проверяем, заканчивается ли путь к папке на \, если да, то удаляем его,
if(Folder[Folder.Length()] == '\\')
Folder.SetLength(Folder.Length()-1);
if(FindFirst(Folder+"\\*.*",faAnyFile,SR) == 0)//Делаем первый поиск
do
{ //Если то что мы нашли не является обратными ссылками...
if(SR.Name != "." && SR.Name != "..")
{ //Если то что мы нашли является папкой, функция вызывает саму себя
//и увеличивает счетчик кол-ва подпапок
if((SR.Attr & faDirectory)!=0)
{
FolderSize(Folder+"\\"+SR.Name,Size,fCount,folCount);
folCount++;
}
else //Если это файл - прибавляем его размер к общему размеру
{
Size = Size + SR.Size;
fCount++;
}
}
}
while(FindNext(SR)==0);
FindClose(SR);
}