Câu trả lời đơn giản: Bởi vì nó được định nghĩa theo cách đó.
Câu trả lời dài hơn: Nó được định nghĩa theo cách đó bởi vì một số hoạt động đơn giản hơn về mặt khái niệm:
- Nếu một tệp chứa 20 chữ cái "A" và bạn xóa tất cả "A", thì tệp sẽ trở nên ngắn hơn 20 byte. Hoạt động tương tự trên một tệp chỉ bao gồm "AAAAAAAAAAAAAAAAAAAA" sẽ phải xử lý trường hợp đặc biệt của tệp biến mất.
- Thực tế hơn, việc xóa dòng cuối cùng của tệp văn bản sẽ cần phải được đặc biệt.
- Các trình soạn thảo văn bản thường xuyên tạo bản sao lưu sẽ cần mã trường hợp đặc biệt để xử lý tình huống người dùng có thể xóa dòng cuối cùng, đi ăn trưa, sau đó quay lại và thêm một dòng khác. Các biến chứng tiếp theo phát sinh nếu một số người dùng khác tạo một tệp có tên đó trong thời gian trung bình.
Bạn có thể làm nhiều việc hơn: * Các tệp nhật ký lỗi có xu hướng được tạo trống, sẽ được điền nếu và chỉ khi xảy ra lỗi. * Để tìm hiểu có bao nhiêu lỗi xảy ra, bạn đếm số dòng trong tệp nhật ký. Nếu tệp nhật ký trống, số lỗi bằng 0, điều này có ý nghĩa hoàn hảo. * Đôi khi bạn thấy các tệp trong đó tất cả các văn bản có liên quan nằm trong tên tệp, ví dụ hoặc .this-is-the-logging-directory
. Điều này ngăn quản trị viên quá mức xóa các thư mục trống sau khi cài đặt và nó cũng ngăn các lỗi trong đó chương trình hoặc người dùng vô tình tạo một tệp mà chương trình muốn xem thư mục sau. Các git
chương trình (và những người khác) có xu hướng bỏ qua các thư mục rỗng, và nếu một dự án / administrator / người dùng muốn có một kỷ lục mà các thư mục tồn tại mặc dù nó không có nội dung hữu ích (chưa), bạn có thể thấy một tập tin rỗng tênempty
empty.directory
Không có hoạt động nào trở nên phức tạp hơn:
- Ghép các tệp: đây chỉ là một no-op với một tệp trống.
- Tìm kiếm một chuỗi trong một tệp: điều này được bao phủ trong trường hợp tiêu chuẩn là "nếu tệp ngắn hơn cụm từ tìm kiếm, thì nó không thể chứa cụm từ tìm kiếm".
- Đọc từ tệp: các chương trình cần xử lý việc nhấn vào cuối tệp trước khi chúng nhận được những gì chúng mong đợi, vì vậy một lần nữa trường hợp tệp có độ dài bằng 0 không liên quan đến suy nghĩ thêm cho lập trình viên: anh ta sẽ chỉ nhấn vào cuối -file ngay từ đầu.
Trong trường hợp tệp, khía cạnh "có một tệp được ghi ở đâu đó" (inode và / hoặc tên tệp) xuất hiện trên các cân nhắc ở trên, nhưng các hệ thống tệp sẽ không làm điều đó nếu các tệp trống là vô dụng.
Nói chung, tất cả các lý do trên trừ những lý do liên quan đến tên tệp áp dụng cho chuỗi. Đáng chú ý nhất là các chuỗi, là chuỗi các ký tự: Chuỗi có độ dài bằng không là phổ biến bên trong các chương trình. Chuỗi thường không được phép ở cấp độ người dùng nếu chúng không có ý nghĩa: tên tệp là một chuỗi và hầu hết các hệ thống tệp không cho phép một chuỗi trống làm tên tệp; Trong nội bộ, khi tạo tên tệp từ các đoạn, chương trình có thể có một chuỗi trống là một trong các đoạn.