Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.12;
Скачать: CL | DM;

Вниз

Узнать сколько места на диске занимает файл   Найти похожие ветки 

 
Apachi   (2009-10-01 10:05) [0]

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


 
QAZ   (2009-10-01 10:39) [1]

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

както так


 
Apachi   (2009-10-01 10:43) [2]

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


 
brother ©   (2009-10-01 11:08) [3]

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


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


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

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


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


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

бойся


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

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


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

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


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

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


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

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


 
Riply ©   (2009-10-02 06:04) [9]

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


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


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

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


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


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

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


 
Riply ©   (2009-10-03 03:15) [12]

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

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

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

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


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

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

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


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

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


 
Denis__ ©   (2009-10-03 22:27) [15]


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


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


 
Riply ©   (2009-10-03 23:43) [16]

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

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



Страницы: 1 вся ветка

Текущий архив: 2012.02.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1319488202
Юрий
2011-10-25 00:30
2012.02.12
С днем рождения ! 25 октября 2011 вторник


6-1250609834
raslmc
2009-08-18 19:37
2012.02.12
Проблема с WebModule1


15-1319659770
Kerk
2011-10-27 00:09
2012.02.12
Отчет о работе сервисов Google


15-1319315405
Юрий
2011-10-23 00:30
2012.02.12
С днем рождения ! 23 октября 2011 воскресенье


2-1320169991
Gu
2011-11-01 20:53
2012.02.12
Package x64 Delphi Xe2