ขนาดของไฟล์ในดิสก์จะมีขนาด 0 ไบต์ได้อย่างไรเมื่อมีข้อมูลอยู่ในนั้น


106

ฉันมีไฟล์ใน Windows 10 ที่มีข้อมูล 362 ไบต์ แต่ "ขนาดของดิสก์" เป็นเพียง 0 ไบต์ มันง่ายโปรแกรม "สวัสดีชาวโลก" เขียนในการชุมนุมและบันทึกไว้ในNotepad ++

เป็นไปได้อย่างไรว่าขนาดของดิสก์เป็นศูนย์เมื่อขนาดของไฟล์เป็น 362 ไบต์?

ฉันมี SSD ไม่ใช่ฮาร์ดดิสก์ปกติ

สกรีนช็อตของกล่องโต้ตอบคุณสมบัติ:

สกรีนช็อตของกล่องโต้ตอบคุณสมบัติ


4
คำตอบสั้น ๆ : หากไม่ต้องการพื้นที่บนดิสก์เพิ่มเติมเพื่อจัดเก็บเนื้อหา
David Schwartz

11
@Thomas ไม่ซ้ำกัน ชื่อฟังดูคล้ายกัน แต่คำถามนั้นถามว่าเพราะเหตุใด Windows จึงประกาศไฟล์ zero-byte ให้มีขนาดเป็นศูนย์แม้จะต้องการลงทะเบียนที่ไหนสักแห่ง คำถามนี้ถามว่าทำไมขนาดของดิสก์อาจเป็นศูนย์แม้ว่าจะมีข้อมูลอยู่ในไฟล์
Ben N


@BenN กำลังตั้งค่าสถานะว่าไม่เหมาะสมเพราะคุณอยู่ในความถูกต้องมันจะไม่ซ้ำกันอย่างแน่นอน
วิลเลียม

สวัสดี Coder88 ฉันเชื่อว่าบุคคลที่โพสต์โพสต์ของคุณซ้ำซ้อนนั้นถูกเข้าใจผิด - คำถามอื่นกำลังถามบางสิ่งที่แตกต่างออกไป คุณถามคำถามที่ดีจริงๆ หากคุณต้องการระบุว่าคำถามของคุณได้รับการแก้ไขแล้วคุณสามารถคลิกเครื่องหมายถูกถัดจากคำตอบที่นี่
Ben N

คำตอบ:


155

สิ่งนี้จะเกิดขึ้นหากไฟล์มีขนาดเล็กจนเนื้อหาและระบบการทำบัญชีไฟล์พอดีใน 1KB เพื่อประหยัดพื้นที่ดิสก์ NTFS จะเก็บไฟล์ "resident" ไว้ในไฟล์ขนาดเล็กจัดเก็บเนื้อหาไว้ในเรคคอร์ดของไฟล์ดังนั้นจึงไม่ต้องจัดสรรคลัสเตอร์ ดังนั้นขนาดของดิสก์จึงเป็นศูนย์เพราะไม่มีอะไรมากไปกว่าการบันทึกไฟล์ เมื่อไฟล์มีขนาดใหญ่พอ NTFS จะทำให้มันเป็น "nonresident" จัดสรรหนึ่งหรือหลายคลัสเตอร์สำหรับมัน (การสร้างขนาดที่ไม่ใช่ศูนย์ "บนดิสก์") และสร้าง "การจับคู่คู่" ในบันทึกไฟล์ในตำแหน่งของข้อมูล ชี้ไปที่คลัสเตอร์

ฮาร์ดไดรฟ์ SSD หรือ Windows 10 จะไม่มีผลกับสิ่งนี้ มันเป็นคุณสมบัติของ NTFS อ่านเพิ่มเติม: สี่ขั้นตอนของไฟล์ NTFS การเจริญเติบโต

โปรดทราบว่าการวัด "ขนาดบนดิสก์" ไม่ถูกต้อง ตัวอย่างเช่นจะไม่รวมค่าคงที่ 1KB ที่บันทึกไฟล์ NTFS ตัวชี้วัดถูกนำมาใช้ใน Windows 95 ซึ่งไม่ได้ใช้ NTFS และดังนั้นจึงไม่สามารถคิดได้สำหรับปรากฏการณ์นี้ มันเพิ่งแสดงให้เห็นว่าขนาดไฟล์ถูกปัดขึ้นเป็นหลายเท่าของขนาดคลัสเตอร์ถัดไป อัลกอริทึมการประเมินนั้นถูกส่งไปยัง Windows 7 แม้ว่า Windows หลายรุ่นระหว่างพวกเขาจะใช้ NTFS และที่เก็บข้อมูลภายใน ในที่สุดก็มีการปรับปรุงใน Windows 8 เพื่อนับไฟล์ที่มีข้อมูลถิ่นที่อยู่เท่านั้นเป็นขนาดศูนย์บนดิสก์ อ่านเพิ่มเติม: อะไรคือ 'ขนาดบนดิสก์'?


1
สักครู่ฉันคิดว่าเรากำลังดูผลกระทบของ Data Deduplication ( blog.fosketts.net/2012/01/01/3/30 ) แต่ฉันเชื่อว่าฟีเจอร์นี้ทำงานได้ในระดับที่โปร่งใสเหมือนกับตัวชี้วัด "ขนาดบนดิสก์"
misha256

8
แต่เดี๋ยวก่อน ... ฉันไม่สามารถจำลองพฤติกรรม OPs บนไดรฟ์ข้อมูล NTFS ของฉัน (Windows 7) ไม่ว่าฉันจะสร้างไฟล์เล็ก ๆ ได้อย่างไร (บางไฟล์ยาวเพียงหนึ่งไบต์) แต่ละไฟล์จะใช้4KB "พื้นที่ว่างในดิสก์" ตามช่องโต้ตอบคุณสมบัติไฟล์ อืม ...
misha256

8
@ misha256 อืมฉันสามารถสร้างมันใหม่ด้วยไฟล์ภายใต้ ~ 700 ไบต์บน Windows 8.1 ฉันเดาว่าอัลกอริทึมนั้นฉลาดกว่าที่ไหนสักแห่งระหว่าง Windows 7 และ 8.1 ตั้งแต่เดิมมันไม่รู้อะไรเกี่ยวกับ NTFS ( แหล่งที่มา ) โปรดทราบว่าเมื่อไฟล์เข้าสู่ขั้นตอนที่สองไฟล์จะไม่หดกลับลง
Ben N

6
@ ฟิลิปฉันเดาว่าใครจะเถียงกันก็ได้ ตามเนื้อผ้า "ไฟล์บนดิสก์" คือ "ขนาดของคลัสเตอร์ที่จัดสรร" (เช่นคุณสามารถเห็นผลของการเลือกขนาดคลัสเตอร์ที่ใหญ่เกินไป) มันไม่เคยมีความรู้ของฉันรวมถึงพื้นที่ "แคตตาล็อก" ที่ต้องการโดยระบบไฟล์ (เช่นขนาดของ "รายการไดเรกทอรี" หรือ "ความยาวของสายโซ่ของรายการ FAT")
TripeHound

3
@Philipp: อย่างไรก็ตามรวมถึงการทำบัญชีในขนาดไฟล์จะมีขนดกเร็ว: คุณจะอธิบายไฟล์ 1 คลัสเตอร์ที่มี 3 ชื่อได้อย่างไร
Deduplicator
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.