Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизРазмер папки Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c