![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| NurbolKazbekov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.10.2005 Репутация: нет Всего: нет |
Привет ВСЕМ! Как определить размер папки? РАзмер файла определить удалось, а вот как насчет каталога? Подскажите плиз. Буду благодарен!
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
перебор всех файлов и подпапок и суммирование их размеров...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
||||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Замечу, что задача в общем виде решения не имеет.
Вопросы: 1). Как насчёт файлов и папок, доступ к которым запрещён вам ACL списком? Требовать BACKUP-привилегии? 2). Как насчёт hard-link? Если в папке есть hard-link, указывающий на файл/папку вне текущей папки вы его считать будете или нет? Будет ли влиять на результат наличие другого hard-link-а, совершенно в другом месте? 3). Если hard-link указывает на файл в подпапке текущей папки - его считать или нет? Будет ли влиять на результат наличие другого hard-link-а, совершенно в другом месте? 4). Как насчёт сжатых файлов? Какой размер плюсовать к общему: логический или физический? 5). Что насчёт действительно занимаемого места, с учётом хвостов (округление до кластера)? 6). Как насчёт бесконечной рекурсии? Hard-link может указывать на вышестоящую папку. 7). Как насчёт разрежённых (sparse) файлов? Какой размер они прибавляют к общему? 8). Будете ли вы считать размер дополнительных файловых потоков? 9). А место, занимаемое вспомогательными структурами (ACL, записи для файлов и папок в MFT и т.п.)? Предлагаю попробовать написать универсальную функцию ;) Это сообщение отредактировал(а) CodeMonkey - 30.1.2009, 13:01 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
CodeMonkey, монстр !
просто спросили а здесь такое.... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
...что, думали в сказку попали?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Эт смотря зачем нам нужен размер Допустим, для дампа (без сжатия) 1. Работаем под админом и считаем, что у нас есть доступ к самому диску. Соответственно нам плевать на любые запреты (злобных троянов не рассматриваем 2,3. Если объект имеет в маске FILE_ATTRIBUTE_REPARSE_POINT, считаем его существующим, но пустым. Если же кто-то извне ссылается на объект в нашей директории - игнорируем (это его личные проблеммы 4. Физический (если надо, то используем "прямое" чтение) 5. Я бы округляла, но это не обязательно (зависит от способа сохранения) 6. см. 2,3 (стандартные грабли, которые почему-то никто не желает учитывать 7. я бы добавляла "ValidSize", запоминая размер разряженного пр-ва (понадобиться для восстановления) 8. Конечно будем, куда ж без них то 9. То что содержится в потоках, уже запомнили. То что в самой MFT - запоминаем только "параметры" объекта, требуемые для его воссоздания. (если приспичит можно запомнить и саму файловую запись). Ничего страшного в этом нет, надо только истоптать семь пар каменных башмаков да истереть три железных посоха. И золотой ключик будет у нас в кармане Это сообщение отредактировал(а) Riply - 31.1.2009, 01:18 |
|||
|
||||
| NurbolKazbekov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.10.2005 Репутация: нет Всего: нет |
ВСЕМ СПАСИБО за отклик! Мне просто нужны были советы, как определить размер простой папки (без всяких фишек, кот. CodeMonkey писал, конечно это хорошо). Наверно буду делать так как говорит Romikgy,
Вопрос на этом можно закрыть. Еще раз ВСЕМ СПАСИБО! |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |