Prosta odpowiedź: Ponieważ tak jest zdefiniowane.
Dłuższa odpowiedź: zdefiniowano w ten sposób, ponieważ niektóre operacje są koncepcyjnie prostsze:
- Jeśli plik zawiera 20 liter „A” i usuniesz wszystkie litery „A”, plik będzie krótszy o 20 bajtów. Ta sama operacja na pliku składającym się tylko z „AAAAAAAAAAAAAAAAAAAA” musiałaby dotyczyć specjalnego przypadku znikania pliku.
- Praktycznie usunięcie ostatniego wiersza pliku tekstowego wymagałoby specjalnego wpisania.
- Edytory tekstu, którzy regularnie wykonują kopię zapasową, potrzebowaliby specjalnego kodu, aby poradzić sobie z sytuacją, w której użytkownik może usunąć ostatni wiersz, iść na lunch, a następnie wrócić i dodać kolejny wiersz. Dalsze komplikacje pojawiają się, jeśli niektórzy inni użytkownicy utworzyli plik o tej nazwie w międzyczasie.
Możesz zrobić więcej rzeczy: * Pliki dziennika błędów są zwykle tworzone jako puste, do wypełnienia tylko i tylko w przypadku wystąpienia błędu. * Aby dowiedzieć się, ile błędów się wydarzyło, policzysz liczbę wierszy w plikach dziennika. Jeśli plik dziennika jest pusty, liczba błędów wynosi zero, co ma idealny sens. * Czasami widzisz pliki, w których cały odpowiedni tekst znajduje się w nazwie pliku, np this-is-the-logging-directory
. Zapobiega to nadmiernym administratorom usuwania pustych katalogów po instalacji, a także zapobiega błędom, w których program lub użytkownik przypadkowo tworzy plik, w którym program chciałby później zobaczyć katalog. git
Programu (i inni) mają tendencję do ignorowania pustych katalogów, a jeśli projekt / administrator / użytkownik chce mieć zapis, że katalog istnieje, mimo że nie ma przydatnych treści (jeszcze), można zobaczyć pusty plik o nazwieempty
lub empty.directory
.
Żadne operacje nie stają się bardziej skomplikowane:
- Łączenie plików: jest to po prostu brak operacji z pustym plikiem.
- Wyszukiwanie ciągu w pliku: jest to objęte standardowym przypadkiem „jeśli plik jest krótszy niż wyszukiwane hasło, nie może zawierać wyszukiwanego hasła”.
- Czytanie z pliku: programy muszą poradzić sobie z trafieniem na koniec pliku, zanim otrzymają to, czego się spodziewali, więc znowu przypadek pliku o zerowej długości nie wymaga dodatkowego myślenia dla programisty: po prostu uderzy w koniec -plik od samego początku.
W przypadku plików aspekt „istnieje gdzieś plik nagrany” (nazwa i-węzła i / lub nazwa pliku) jest najważniejszy z powyższych rozważań, ale systemy plików nie zrobiłyby tego, gdyby puste pliki były bezużyteczne.
Zasadniczo wszystkie powyższe powody oprócz tych związanych z nazwami plików dotyczą sekwencji. W szczególności ciągi, które są ciągami znaków: Ciągi o zerowej długości są powszechne w programach. Ciągi są zwykle niedozwolone na poziomie użytkownika, jeśli nie mają sensu: nazwa pliku jest ciągiem, a większość systemów plików nie zezwala na pusty ciąg jako nazwę pliku; wewnętrznie, podczas tworzenia nazw plików z fragmentów, program może mieć pusty ciąg jako jeden z fragmentów.