6

В Windows XP в разделе « File Properties каков фактический размер файла? Размер или Размер на диске?

Я ищу точный размер файла в байтах. Почему Windows винит использование дополнительного места на диске вместо того, чтобы называть его Size Windows takes to store this file?

8 ответов8

18

Размер - это фактическое количество байтов в файле.

Размер на диске - это количество байтов, которое файл занимает на диске. Как правило, это большее число, потому что дисковое пространство может быть выделено только в блоках, поэтому на диске в конце файла будет зарезервировано дополнительное свободное пространство для заполнения последнего блока. Но это свободное пространство на самом деле не является частью файла.

17

Я не верю, что это проблема Windows. Поскольку диски размещены в блоках, файл может занимать больше места на диске, чем его фактический размер, если размер файла не является точным кратным размеру блока дисков.

Рассматривать:

File         |------3.4k------|   |-------------4.1k--------| 
Disk Blocks  |--------4k----------|--------4k----------|--------4k----------|

Файлы на диске должны быть выровнены по выделенным блокам (они должны начинаться там, где начинается блок), например, если фактический размер файла был 3,4 КБ, а размер блока диска 4 КБ, размер файла на диске был бы 4 КБ, потому что даже если в файле всего 3,4 тыс. данных, фактически он занимает 4 тыс. на диске, потому что вы не можете использовать оставшуюся часть этого блока ни для чего.

10

Перед тем, как винить Windows о потере этого места на диске, вы должны немного понять, как практически все файловые системы управляют пространством на жестких дисках.

"Наименьший" адресуемый кусок пространства на жестком диске - это сектор (часто 512 байт), и вы не можете читать или писать меньше этого размера. Если вы хотите записать один байт в сектор, вы должны прочитать сектор, изменить байт и записать сектор обратно. Вот так работает физика / электроника. "Блок" обычно представляет собой один или несколько секторов и представляет наименьший кусок пространства, который файловая система выделит для файла. Старые файловые системы DOS "FAT-Based" увеличивали размер блока по мере увеличения размера диска.

По многим причинам файловые системы предпочитают НЕ иметь несколько файлов, совместно использующих один и тот же сектор. Представьте себе, если вы хотите сделать файл немного длиннее - это "потраченное впустую пространство" в конце сектора может быть использовано до того, как будут выделены дополнительные сектора для увеличения размера файла.

И, хотя теоретически возможно иметь файловую систему, которая может выделять дисковые файлы на основе байтов (или даже битов), объем служебного хранилища на диске, чтобы отслеживать это, будет стремительным и, вероятно, перевесит любые преимущества, которые вы могли бы получили. И производительность, вероятно, будет очень плохой ...

6

Windows всегда правильно вычисляла размер файла при отображении в больших единицах (1 КБ = 1024 Б и т.д.).

Размер - это фактический размер файла, а размер на диске - это фактический размер, взятый на жестком диске. Поскольку жесткие диски разбиты на блоки, вам придется полностью использовать блок. Я был бы как ведро с 4 л, а у вас 5 л воды, вам понадобятся два ведра для воды.

5

Размер. Размер на диске - это количество блоков * размера блока, необходимое для хранения файла на диске.

4

Размер на диске относится к тому факту, что диск разделен на блоки, поэтому диск, использующий блоки 4 КБ, сообщит о размере на диске 4 КБ.

Я сделал текстовый файл с одним символом, и он правильно сообщает, что размер файла составляет 1 байт. Размер на диске равен 4 КБ, поскольку это наименьшее пространство на диске, которое может занять файл.

1

Мммм, определите "реальный". Файл всегда будет занимать некоторое целое число блоков; Я забываю размер блоков в файловой системе Windows (я серьезно не использовал Windows около 10 лет), но я уверен, что вы можете получить количество блоков из DIR или, в худшем случае, установив Cygwin и используя ls , Таким образом, "реальный" размер файла - это размер блока × количество блоков в этом смысле.

Или, поскольку файл может заканчиваться в середине блока, "реальным" размером файла может быть фактическое число байтов, и в этом случае wc -c даст это.

1

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

Тони

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .