Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Размер папки   Найти похожие ветки 

 
frost ©   (2003-11-27 20:48) [0]

Как максимально быстро узнать размер папки и количество файлов в нем?


 
DVM ©   (2003-11-27 21:20) [1]

ShGetFileInfo()


 
Diamond Cat ©   (2003-11-27 23:20) [2]

создавать файл с информацией об этой папке, соответственно нужно вешать прогу отслеживающую изменения в этой папке
(каков вопрос таков ответ)


 
frost ©   (2003-11-28 08:49) [3]

Разве ShGetFileInfo позволяет получить размер папки (Delphi под рукой нет) ?


 
Anatoly Podgoretsky ©   (2003-11-28 09:05) [4]

А что есть размер папки?


 
pasha_golub ©   (2003-11-28 11:00) [5]

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

ЗЫ Лучше запускать в отдельном потоке, потому как папка Windows, например, считается не быстро. У меня такого плана поток есть, чуть-чуть подправить надо под эту задачу. Мыльте, если чего


 
DVM ©   (2003-11-28 16:34) [6]

function GetDirectorySize(const Path: string): Int64;
var
FD : TWin32FindData;
FH : THandle;
TempSize: TULargeInteger;
begin
Result := 0;
if Path="" then exit;
if not(DirExists(Path)) then exit;
FH := FindFirstFile( PChar( Path + "*.*" ), FD );
repeat
if (FH<>INVALID_HANDLE_VALUE) and (FD.cFileName <> string(".")) and
(FD.cFileName<>string("..")) then
begin
if (FILE_ATTRIBUTE_DIRECTORY and FD.dwFileAttributes) <> 0 then
Inc(Result, GetDirectorySize(Path + FD.cFileName + "\"))
else
begin
TempSize.LowPart := FD.nFileSizeLow;
TempSize.HighPart := FD.nFileSizeHigh;
Inc(Result, TempSize.QuadPart);
end;
end;
until FindNextFile(FH,FD) = false;
FindClose(FH);
end;


 
frost ©   (2003-11-29 09:14) [7]

Для Anatoly Podgoretsky - размер папки код от DVM, что то подобное и у меня, но может кто то знает как можно еще быстрее,
для меня скорость определения в данном случае очень кретична.
Спасибо.


 
Anatoly Podgoretsky ©   (2003-11-29 10:02) [8]

Значит это размер содержимого папки, без размера самой папки. Этот расзмер естественно также не вклюяает размеры других папок. Тогда стандартный рекурсивный подсчет размеров файлов, через всеми любимый FindXXXX
К коду единственное замечание, ресурсы надо освобождать, только тогда когда они выделены.


 
Anatoly Podgoretsky ©   (2003-11-29 10:04) [9]

Значит это размер содержимого папки, без размера самой папки. Этот расзмер естественно также не вклюяает размеры других папок. Тогда стандартный рекурсивный подсчет размеров файлов, через всеми любимый FindXXXX
К коду единственное замечание, ресурсы надо освобождать, только тогда когда они выделены.



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

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-16224
Overstep
2004-01-26 17:37
2004.02.06
Ошибка в проэкте


8-16536
Overlord
2003-09-06 22:15
2004.02.06
Вопрос про звук!


1-16417
Konstantin
2004-01-20 19:42
2004.02.06
Самомодифицирующийся код


1-16245
denis24
2004-01-26 15:58
2004.02.06
strtofloat( 150.00 )


1-16317
denkop
2004-01-20 23:42
2004.02.06
TFileStream