Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Узнать сколько места на диске занимает файл [D7, WinXP]


Apachi ©   (2009-10-01 10:05:00) 

Уважаемые мастера
Подскажите пожалуста как узнать по имени файла, сколько он занимает места на диске??? Как правило это значение немного превышает размер файла.
Помогите пожалуста!


Riply   (2009-10-03 23:43:00) [1]

> [15] Denis__ ©   (03.10.09 22:27)
> наверное все же байт?=)

Угу. Опечатка. Sorry.


Denis__   (2009-10-03 22:27:00) [2]


> Угу. В секторе может быть и 4096 КВ.


наверное все же байт?=)


1024байт   (2009-10-03 11:14:00) [3]

так чего же стОит твоё "знание того что 512байт в секторе", если всем заинтересованным известно, что это не так?
в общем поменьше самоуверенности


QAZ   (2009-10-03 09:57:00) [4]

Размер сектора традиционноравен 512 байт.В 2006  IDEMA объявила о переходе на размер сектора 4096 байт который планируется завершить к 2010

по поводу определения размера сектора написано постом ниже


Riply   (2009-10-03 03:15:00) [5]

> [10] 1024байт   (02.10.09 22:03)
> что за знание?

Угу. В секторе может быть и 4096 КВ. Видела своими глазами :)

> [11] Германн ©   (03.10.09 02:37)
> О! Саша нашла время, свободное от модерирования форума "исходников", и вернулась к нам.

Дык я и не уходила, ибо от Мастеров не уйдешь :)


Германн   (2009-10-03 02:37:00) [6]


> Riply ©   (02.10.09 06:04) [9]

О! Саша нашла время, свободное от модерирования форума "исходников", и вернулась к нам. Это - плюс! И нам и ей!
Это что-то среднее между Розычем и Ромкиным.
:)


1024байт   (2009-10-02 22:03:00) [7]


> и знание того что 512байт в секторе

что за знание?


Riply   (2009-10-02 06:04:00) [8]

Для получения "выделенного" под файл места (без учета потоков),
можно попробовать использовать ZwQueryInformationFile(..., FileStandardInformation)
В структуре FILE_STANDARD_INFORMATION обратить внимание на поле AllocationSize.
Дело в том, что для файла, например размером 4КБ,
может быть выделено как 2КБ (компрессированный), так и 57564 КБ
Вообщем, как выпендриваемся при его создании, такой результат и получаем :)


QAZ   (2009-10-01 12:21:00) [9]

а по поводу фрагментации и прочего бреда не парься...
минимальная неделимая еденица хранения информации:
в файловой системе - кластер,
для "голого" диска - сектор


QAZ   (2009-10-01 12:18:00) [10]

ищо нюанс
чтоб узнать размер сжатого в NTFS файла надо юзать соотв. функции
так как обычные будут выдавать разжатый размер


QAZ   (2009-10-01 12:00:00) [11]

точней в GetDiskFreeSpace можно и размер сектора узнать если чо...


QAZ   (2009-10-01 11:50:00) [12]


> я боюсь огорчить

бойся


> осталось только узнать определение размера кластера

функция GetDiskFreeSpace
и знание того что 512байт в секторе


DrPass   (2009-10-01 11:13:00) [13]


> brother ©   (01.10.09 11:08) [3]
> я боюсь огорчить...) не все так просто: а если файл фрагментирован?
>

А разве в этом случае количество недозаполненных кластеров становится больше одного?


brother   (2009-10-01 11:08:00) [14]

я боюсь огорчить...) не все так просто: а если файл фрагментирован?


Apachi   (2009-10-01 10:43:00) [15]

осталось только узнать определение размера кластера :)
ща покапаем
спасибо


QAZ   (2009-10-01 10:39:00) [16]

if рамер файла mod размер кластера >0 then
(рамер файла div размер кластера +1)*размер кластера else
(рамер файла div размер кластера)*размер кластера;

както так


Наверх

Титульная страница Поиск, карта сайта Написать письмо