Домашня » як » Як розмір файлу може бути нульовим?

    Як розмір файлу може бути нульовим?

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

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

    Питання

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

    У цьому я зіткнувся і не міг придумати належне пояснення. Якщо я створюю порожній * .txt файл на моєму комп'ютері, а потім подивіться на його розмір, він показує розмір нуля. Як це можливо? Я маю на увазі, навіть якщо сам файл порожній, він все одно повинен мати деякий розмір (навіть якщо це просто збереження власного імені). Як це можна пояснити?

    Як можна мати розмір нуля у файлі?

    Відповідь

    Співробітники SuperUser Девід Шварц і Корт Аммон мають відповідь для нас. Спочатку, Девід Шварц:

    Це можливо, тому що дійсно немає файлу. Існує лише запис каталогу з іменем та власником. Запис каталогу логічно відрізняється від файлу. Наприклад, той самий файл може мати більше одного імені в більш ніж одному каталозі.

    На жаль, файл терміна не завжди використовується для того, щоб означати точно одне й те саме. Але логіка розміру файлу походить від моделі, де запис каталогу приєднує файл до каталогу, тоді імена файлів і пов'язані з ними мета-дані зберігаються в каталозі.

    Далі йде відповідь від Cort Ammon:

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

    Є багато розмірів файлів, які є значущими. Найбільш поширеним, і тут ви бачите, є кількість байтів у файлі. Якщо файл є порожнім текстовим файлом, він дійсно може містити нульові байти. Це число важливо для програмістів, тому що нам часто потрібно відкривати файл, читати всі дані і закривати його. Ми повинні знати, скільки байтів даних буде у файлі, щоб ми могли планувати заздалегідь.

    Інший сенс виникає з того, як більшість файлових систем зберігає дані. Більшість файлових систем зберігають дані в блоках. Наприклад, файлова система може зберігати дані в блоках 64 кб, тобто вона ніколи не буде виділяти нічого, що не є навіть кратним 64 кБ. Це звучить неефективно, але може зробити бухгалтерію трохи простішою, а найчастіше простіше - швидше.

    Третє значення, яке ви перетягуєте, - це фактична кількість бітів, необхідних на жорсткому диску для опису наявності файлу. Це включає в себе інформацію, яка зазвичай зберігається окремо від файлу. Наприклад, в Linux концепція імені файлу зберігається в inode для каталогу, що містить файл. [На основі вхідних даних інших коментарів це (технічно) зберігається в даних каталогу. Коли я писав це, я думав про справу з малим каталогом. Дані, менші за 156 байт, можуть зберігатися безпосередньо в індексі.] Це не поширене значення, оскільки дуже важко визначити, не знаючи надзвичайно глибокої внутрішньої роботи вашої файлової системи (наприклад, врахування місця, необхідного для зберігання всіх дозволів на файл). Однак, якщо у вас жорсткий диск на 1000000 байт і хочете знати, наскільки великий файл може поміститися на цьому жорсткому диску, це буде для вас дуже важливим значенням!


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.