![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать сколько места на диске занимает файл [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 размер кластера)*размер кластера;
както так