คำตอบง่ายๆ: เพราะมันถูกกำหนดไว้อย่างนั้น
คำตอบที่ยาวกว่า: มันถูกกำหนดด้วยวิธีนี้เนื่องจากการดำเนินการบางอย่างนั้นง่ายกว่าที่คิด:
- หากไฟล์มี 20 ตัวอักษร "A" และคุณลบ "A" ทั้งหมดแล้วไฟล์จะสั้นลง 20 ไบต์ การดำเนินการเดียวกันกับไฟล์ที่มีเพียง "AAAAAAAAAAAAAAAAAAAA" จะต้องจัดการกับกรณีพิเศษของไฟล์ที่หายไป
- ยิ่งกว่านั้นการลบบรรทัดสุดท้ายของไฟล์ข้อความจะต้องเป็นกรณีพิเศษ
- เครื่องมือแก้ไขข้อความที่สำรองข้อมูลเป็นประจำจะต้องใช้รหัสตัวพิมพ์เล็กพิเศษเพื่อจัดการกับสถานการณ์ที่ผู้ใช้อาจลบบรรทัดสุดท้ายไปที่อาหารกลางวันจากนั้นกลับมาและเพิ่มอีกบรรทัดหนึ่ง ภาวะแทรกซ้อนเพิ่มเติมเกิดขึ้นหากผู้ใช้รายอื่นสร้างไฟล์ด้วยชื่อนั้นในเวลาเฉลี่ย
คุณสามารถทำสิ่งต่าง ๆ ได้มากขึ้น: * ไฟล์บันทึกข้อผิดพลาดมักจะถูกสร้างว่างเปล่าให้เติมหากเกิดข้อผิดพลาด * หากต้องการทราบว่ามีข้อผิดพลาดเกิดขึ้นกี่ครั้งคุณนับจำนวนบรรทัดในล็อกไฟล์ หากล็อกไฟล์ว่างเปล่าจำนวนข้อผิดพลาดจะเป็นศูนย์ซึ่งทำให้รู้สึกสมบูรณ์แบบ * this-is-the-logging-directory
บางครั้งคุณเห็นไฟล์ที่ทุกข้อความที่เกี่ยวข้องที่อยู่ในชื่อไฟล์เช่น สิ่งนี้จะป้องกันผู้ดูแล overeager จากการลบไดเรกทอรีว่างเปล่าหลังจากการติดตั้งและยังป้องกันข้อผิดพลาดที่โปรแกรมหรือผู้ใช้สร้างไฟล์โดยไม่ตั้งใจซึ่งโปรแกรมต้องการเห็นไดเรกทอรีในภายหลัง git
โปรแกรม (และอื่น ๆ ) มีแนวโน้มที่จะไม่สนใจไดเรกทอรีว่างและถ้าโครงการ / ผู้ดูแลระบบ / ผู้ใช้ต้องการที่จะมีการบันทึกว่าไดเรกทอรีที่มีอยู่แม้ว่ามันจะไม่มีเนื้อหาที่เป็นประโยชน์ (ยัง), คุณอาจจะเห็นไฟล์ที่ว่างเปล่าชื่อempty
empty.directory
หรือ
ไม่มีการดำเนินการที่ซับซ้อนมากขึ้น:
- การต่อไฟล์: นี่เป็นเพียงไฟล์เดียวกับไฟล์เปล่า
- การค้นหาสตริงในไฟล์: นี่จะครอบคลุมโดยกรณีมาตรฐานของ "ถ้าไฟล์นั้นสั้นกว่าคำค้นหาก็ไม่สามารถมีคำค้นหา"
- การอ่านจากไฟล์: โปรแกรมจำเป็นต้องจัดการกับการกดปุ่มจุดสิ้นสุดของไฟล์ก่อนที่พวกเขาจะได้รับสิ่งที่พวกเขาคาดหวังดังนั้นกรณีของไฟล์ที่มีความยาวเป็นศูนย์จะไม่เกี่ยวข้องกับการคิดเพิ่มเติมสำหรับโปรแกรมเมอร์: ไฟล์จากจุดเริ่มต้น
ในกรณีของไฟล์, "มีไฟล์ที่บันทึกบางส่วน" (inode และ / หรือชื่อไฟล์) มาด้านบนของข้อควรพิจารณาข้างต้น แต่ระบบไฟล์จะไม่ทำเช่นนั้นถ้าไฟล์ว่างเปล่าไร้ประโยชน์
โดยทั่วไปเหตุผลทั้งหมดข้างต้นยกเว้นที่เกี่ยวข้องกับชื่อไฟล์ใช้กับลำดับ โดยเฉพาะอย่างยิ่งกับสตริงซึ่งเป็นลำดับของอักขระ: สตริงที่มีความยาวเป็นศูนย์เป็นเรื่องธรรมดาภายในโปรแกรม สตริงจะไม่ได้รับอนุญาตในระดับผู้ใช้หากไม่สมเหตุสมผล: ชื่อไฟล์เป็นสตริงและระบบไฟล์ส่วนใหญ่ไม่อนุญาตให้มีสตริงว่างเป็นชื่อไฟล์ ภายในเมื่อสร้างชื่อไฟล์จากแฟรกเมนต์โปรแกรมอาจมีสตริงว่างเป็นหนึ่งในแฟรกเมนต์