-
Уважаемые мастера
Подскажите пожалуста как узнать по имени файла, сколько он занимает места на диске??? Как правило это значение немного превышает размер файла.
Помогите пожалуста!
-
if рамер файла mod размер кластера >0 then
(рамер файла div размер кластера +1)*размер кластера else
(рамер файла div размер кластера)*размер кластера;
както так
-
осталось только узнать определение размера кластера :)
ща покапаем
спасибо
-
я боюсь огорчить...) не все так просто: а если файл фрагментирован?
-
> brother © (01.10.09 11:08) [3]
> я боюсь огорчить...) не все так просто: а если файл фрагментирован?
>
А разве в этом случае количество недозаполненных кластеров становится больше одного?
-
> я боюсь огорчить
бойся
> осталось только узнать определение размера кластера
функция GetDiskFreeSpace
и знание того что 512байт в секторе
-
точней в GetDiskFreeSpace можно и размер сектора узнать если чо...
-
ищо нюанс
чтоб узнать размер сжатого в NTFS файла надо юзать соотв. функции
так как обычные будут выдавать разжатый размер
-
а по поводу фрагментации и прочего бреда не парься...
минимальная неделимая еденица хранения информации:
в файловой системе - кластер,
для "голого" диска - сектор
-
Для получения "выделенного" под файл места (без учета потоков),
можно попробовать использовать ZwQueryInformationFile(..., FileStandardInformation)
В структуре FILE_STANDARD_INFORMATION обратить внимание на поле AllocationSize.
Дело в том, что для файла, например размером 4КБ,
может быть выделено как 2КБ (компрессированный), так и 57564 КБ
Вообщем, как выпендриваемся при его создании, такой результат и получаем :)
-
> и знание того что 512байт в секторе
что за знание?
-
> Riply © (02.10.09 06:04) [9]
О! Саша нашла время, свободное от модерирования форума "исходников", и вернулась к нам. Это - плюс! И нам и ей!
Это что-то среднее между Розычем и Ромкиным.
:)
-
> [10] 1024байт (02.10.09 22:03)
> что за знание?
Угу. В секторе может быть и 4096 КВ. Видела своими глазами :)
> [11] Германн © (03.10.09 02:37)
> О! Саша нашла время, свободное от модерирования форума "исходников", и вернулась к нам.
Дык я и не уходила, ибо от Мастеров не уйдешь :)
-
Размер сектора традиционноравен 512 байт.В 2006 IDEMA объявила о переходе на размер сектора 4096 байт который планируется завершить к 2010
по поводу определения размера сектора написано постом ниже
-
так чего же стОит твоё "знание того что 512байт в секторе", если всем заинтересованным известно, что это не так?
в общем поменьше самоуверенности
-
> Угу. В секторе может быть и 4096 КВ.
наверное все же байт?=)
-
> [15] Denis__ © (03.10.09 22:27)
> наверное все же байт?=)
Угу. Опечатка. Sorry.