Wie kann die Größe einer Datei auf der Festplatte 0 Byte betragen, wenn Daten enthalten sind?


106

Ich habe eine Datei in Windows 10 mit 362 Byte Daten, aber die "Größe auf der Festplatte" beträgt nur 0 Byte. Es ist ein einfaches "Hallo Welt" -Programm, das in Assembly geschrieben und in Notepad ++ gespeichert wurde .

Wie ist es möglich, dass die Größe auf der Festplatte Null ist, wenn die Größe der Datei 362 Bytes beträgt?

Ich habe eine SSD, keine normale Festplatte.

Screenshot des Eigenschaftsdialogs:

Screenshot des Eigenschaftsdialogs


4
Kurze Antwort: Wenn kein zusätzlicher Speicherplatz auf der Festplatte benötigt wird, um den Inhalt zu speichern.
David Schwartz

11
@ Thomas Kein Duplikat. Der Name klingt ähnlich, aber diese Frage fragt, warum Windows eine Null-Byte-Datei als Null-Größe deklariert, obwohl irgendwo eine Registrierung erforderlich ist. Bei dieser Frage wird gefragt, warum die Größe auf der Festplatte Null sein kann, auch wenn die Datei Daten enthält.
Ben N


@BenN Ist es unangemessen zu kennzeichnen, weil Sie Recht haben, ist es sicherlich kein Duplikat.
William

Hallo Coder88, ich glaube, die Person, die Ihren Beitrag als Duplikat gekennzeichnet hat, hat sich geirrt - die andere Frage stellte etwas anderes. Sie haben wirklich eine gute Frage gestellt. Wenn Sie angeben möchten, dass Ihre Frage gelöst ist, können Sie hier auf das Häkchen neben einer Antwort klicken.
Ben N

Antworten:


155

Dies passiert, wenn die Datei so klein ist, dass ihr Inhalt und die Buchhaltung des Dateisystems in 1 KB passen. Um Speicherplatz zu sparen, speichert NTFS kleine Dateien "resident" und speichert ihren Inhalt direkt im Dateidatensatz, sodass kein Cluster dafür zugewiesen werden muss. Daher ist die Größe auf der Festplatte Null, da nichts über den Dateidatensatz hinausgeht. Sobald die Datei ausreichend groß ist, wird sie von NTFS "nicht resident", es werden ein oder mehrere Cluster zugewiesen (wobei eine "Größe auf der Festplatte" ungleich Null erstellt wird) und anstelle der Daten ein "Zuordnungspaar" im Dateidatensatz erstellt Zeigen Sie auf den Cluster.

SSD-Festplatten oder Windows 10 beeinflussen dies nicht. Es ist einfach eine NTFS-Funktion. Lesen Sie weiter: Die vier Phasen des NTFS-Dateiwachstums .

Beachten Sie, dass die Metrik "Größe auf Festplatte" nicht genau richtig ist. Beispielsweise enthält es nie die Konstante 1 KB, die der NTFS-Dateidatensatz belegt. Die Metrik wurde in Windows 95 eingeführt, das kein NTFS verwendete und daher dieses Phänomen nicht hätte berücksichtigen können. Es wurde nur die auf das nächste Vielfache der Clustergröße aufgerundete Dateigröße angezeigt. Dieser Schätzalgorithmus wurde auf Windows 7 übertragen, obwohl viele Windows-Versionen NTFS und residenten Speicher verwendeten. Es wurde schließlich in Windows 8 aktualisiert, um Dateien mit nur residenten Daten als Größe Null auf der Festplatte zu zählen. Weiterführende Literatur: Was ist "Größe auf Platte"?


1
Für einen Moment dachte ich, wir würden uns die Auswirkungen der Datendeduplizierung ansehen ( blog.fosketts.net/2012/01/03/… ), aber ich glaube, dass diese Funktion auf einer Ebene funktioniert, die für so etwas wie die Metrik "Größe auf Festplatte" transparent ist.
Mischa256

8
Aber warte ... Ich kann das Verhalten von OPs auf meinem NTFS-Volume (Windows 7) nicht replizieren. Unabhängig davon, wie ich winzige Dateien erstelle (einige sind nur ein Byte lang), belegen sie gemäß dem Dialogfeld " Dateieigenschaften " jeweils 4 KB "Festplattenspeicher". Hmm ...
Mischa256

8
@ misha256 Huh, ich kann es mit einer Datei unter ~ 700 Bytes unter Windows 8.1 reproduzieren. Ich vermute, dass der Algorithmus irgendwo zwischen Windows 7 und 8.1 intelligenter wurde, da er ursprünglich nichts über ausgefallene NTFS-Inhalte ( Quelle ) wusste . Beachten Sie, dass eine Datei, sobald sie in die zweite Phase übergeht, nie wieder verkleinert wird.
Ben N

6
@Philipp Ich denke, man könnte so oder so argumentieren. Traditionell war die "Datei auf der Festplatte" "die Größe der zugewiesenen Cluster" (so konnten Sie beispielsweise die Auswirkungen einer zu großen Clustergröße erkennen). Soweit ich weiß, wurde der vom Dateisystem benötigte "Katalog" - Speicherplatz (z. B. die Größe des "Verzeichniseintrags" oder die "Länge der Kette von FAT - Einträgen") nie berücksichtigt.
TripeHound

3
@Philipp: Wie auch immer, auch die Buchhaltung in der Dateigröße wird schnell haarig: Wie würden Sie eine 1-Cluster-Datei mit 3 Namen beschreiben?
Deduplicator
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.