Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Вниз

Быстро получить размер каталога   Найти похожие ветки 

 
Status   (2004-02-23 00:48) [0]

Как быстро получить размер каталога большого объёма (допустим в папке около 1000 картинок и папка занимает более 500 МБ).
Я использую следующую процедуру. Когда с помощью неё получаю размер большого каталога, то это занимает несколько секунд:

procedure GetDirSize(Dir: string);
var SearchRec: TSearchRec;
Separator: string;
begin
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 + GetFileSize(Dir + Separator +SearchRec.name);
end
else
if DirectoryExists(Dir + Separator + SearchRec.Name) then begin
if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then
GetDirSize(Dir + Separator + SearchRec.Name);
end;
while FindNext(SearchRec) = 0 do begin
if FileExists(Dir + Separator + SearchRec.Name) then begin
DirBytes := DirBytes + GetFileSize(Dir + Separator +SearchRec.name);
end
else
if DirectoryExists(Dir + Separator + SearchRec.Name) then begin
if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then begin
GetDirSize(Dir + Separator + SearchRec.Name);
end;
end;
end;
end;
FindClose(SearchRec);
end;


 
Palladin   (2004-02-23 01:05) [1]

А что эксплорер или FAR за меньшее время справляются?


 
Palladin   (2004-02-23 01:08) [2]

Кстати TSearchRec уже содержит информацию о размере файла и вызов GetFileSize абсолютно лишний.


 
Gero   (2004-02-23 01:14) [3]

И проверка if FileExists тоже лишняя...


 
Anatoly Podgoretsky   (2004-02-23 07:49) [4]

И DirectoryExists тоже лишнее и вот если эти три штуки выкинешь с небольшими переделками алгоритма, то скорость возрастет неимоверно.


 
Status   (2004-02-23 12:45) [5]

Спасибо, всё получилось, теперь почти мгновенно определяет 500 МБ :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
11-12302
Stargazer
2003-06-19 00:26
2004.03.05
KOL2FPC - проблемы с тестом TestKol3.dpr


3-12228
Pako
2004-02-06 17:52
2004.03.05
SQL


1-12388
satron
2004-02-24 23:50
2004.03.05
Как развернуть окно во весь экран


6-12479
Egeniy189
2003-12-29 16:51
2004.03.05
IP-адрес


3-12251
Layner
2004-02-09 13:18
2004.03.05
Как работать с XML файлом, как с таблицей БД?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский