Проста відповідь: Тому що це визначено саме так.
Більш довга відповідь: Це визначено таким чином, оскільки деякі операції концептуально простіші:
- Якщо файл містить 20 букв "А", а ви видалите всі "А", то файл стане на 20 байт коротшим. Та сама операція над файлом, яка складалася лише з "AAAAAAAAAAAAAAAAAAAAA", повинна мати справу з особливим випадком зникаючого файлу.
- Більш практично, видалення останнього рядка текстового файлу потребує спеціального обліку.
- Текстовим редакторам, які регулярно створюють резервну копію, потрібен спеціальний код для вирішення ситуації, коли користувач може видалити останній рядок, перейти до обіду, а потім повернутися та додати ще один рядок. Подальші ускладнення виникають, якщо деякі інші користувачі створили файл з цим іменем в середній час.
Ви можете зробити більше: * Файли журналу помилок, як правило, створюються порожніми, заповнюються лише тоді, коли трапляється помилка. * Щоб дізнатися, скільки помилок трапилось, ви рахуєте кількість рядків у файлах журналу. Якщо файл журналу порожній, кількість помилок дорівнює нулю, що має ідеальний сенс. * Іноді ви бачите файли, де весь відповідний текст є у назві файлу, наприклад this-is-the-logging-directory
. Це не дозволяє адміністраторам надмірних видалень видаляти порожні каталоги після встановлення, а також запобігає помилкам, коли програма або користувач випадково створює файл, де програма хотіла б побачити каталог пізніше. git
Програма (і інші) , як правило, ігнорують порожні каталоги, і якщо проект / адміністратор / користувач хоче мати запис про те , що каталог існує , навіть якщо він не має ніякого корисного змісту (поки), ви можете побачити порожній файл з ім'ямempty
або empty.directory
.
Жодні операції не ускладнюються:
- Зв’язування файлів: це просто неоперація з порожнім файлом.
- Пошук рядка у файлі: це стосується стандартного випадку "якщо файл коротший за пошуковий термін, він не може містити пошуковий термін".
- Читання з файлу: програми повинні мати справу з тим, щоб потрапити в кінець файлу, перш ніж вони отримали те, що очікували, тож знову ж таки справа файлу нульової довжини не передбачає додаткового мислення для програміста: він просто натисне в кінці -файл з початку.
Що стосується файлів, аспект "десь записаний файл" (inode та / або ім'я файлу) надходить до вищезазначених міркувань, але файлові системи не зробили б цього, якби порожні файли були марними.
Загалом, всі вищезазначені причини, крім тих, що стосуються імен файлів, стосуються послідовностей. Найбільш помітно для рядків, які є послідовностями символів: Рядки нульової довжини є звичайним явищем у програмах. Рядок зазвичай заборонено на рівні користувача, якщо вони не мають сенсу: ім'я файлу - це рядок, і більшість файлових систем не дозволяють порожній рядок як ім'я файлу; внутрішньо, створюючи імена файлів з фрагментів, програма цілком може мати порожній рядок як один із фрагментів.