Как размер файла может быть нулевым?

Мы все время от времени сталкиваемся с «ситуацией» на наших компьютерах, которая оставляет нас полностью сбитыми с толку, такими как файл с нулевым размером, но как это вообще возможно? Сегодняшнее сообщение SuperUser Q & A содержит ответы на запутанный вопрос читателя.

Сегодняшняя сессия вопросов и ответов приходит к нам благодаря SuperUser – подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.

Вопрос

Читатель SuperUser Eugene S хочет знать, как размер файла может быть нулевым:

Это то, с чем я столкнулся и не мог придумать правильного объяснения. Если я создаю пустой файл *. Txt на моем компьютере, а затем смотрю на его размер, он показывает нулевой размер. Как это возможно? Я имею в виду, даже если сам файл пуст, он все равно должен иметь некоторый размер (даже если он просто хранит свое собственное имя). Как это можно объяснить?

Как возможно, чтобы файл имел размер ноль?

Ответ

Авторы SuperUser Дэвид Шварц и Корт Аммон ответят за нас. Прежде всего, Дэвид Шварц:

Это возможно, потому что там действительно нет файла. Есть просто запись в каталоге с именем и владельцем. Запись каталога логически отличается от файла. Например, один и тот же файл может иметь более одного имени в нескольких каталогах.

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

Далее следует ответ от Cort Ammon:

Семантическое значение размера файла отличается от того, который вы используете.

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

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

Третье значение, к которому вы обращаетесь, – это фактическое количество бит, необходимых на жестком диске для описания наличия файла. Это включает в себя информацию, которая обычно хранится отдельно от файла. Например, в Linux концепция имени файла хранится в inode для каталога, содержащего файл. [ Исходя из данных других комментариев, он (технически) хранится в данных каталога. Когда я писал это, я думал о случае с маленьким каталогом. Данные размером менее 156 байт могут быть сохранены непосредственно в inode. ] Это не часто используемый смысл, потому что его очень трудно определить, не зная чрезвычайно глубокую внутреннюю работу вашей файловой системы (например, учет пространства необходимо хранить все разрешения на файл). Однако, если у вас есть жесткий диск объемом 1 000 000 байт и вы хотите знать, какой объем файла может поместиться на этом жестком диске, это будет для вас очень важным значением!

Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других опытных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь.

Оцените статью
TutoryBird.Ru
Добавить комментарий