web-dev-qa-db-fra.com

Comment la taille d'un fichier sur le disque peut-elle être en octets quand il y a des données?

J'ai un fichier dans Windows 10 avec 362 octets de données, mais la "taille sur le disque" n'est que de 0 octet. C'est un simple programme "Hello world" écrit en Assembly et enregistré dans Notepad ++ .

Comment est-il possible que la taille sur le disque soit égale à zéro alors que la taille du fichier est de 362 octets?

J'ai un SSD, pas un disque dur normal.

Capture d'écran de la boîte de dialogue Propriétés:

Screenshot of the Properties dialog

101
Coder88

Cela se produit si le fichier est si petit que son contenu et la comptabilité du système de fichiers tiennent dans 1 Ko. Pour économiser de l'espace disque, NTFS conserve les petits fichiers "résidents", stockant leur contenu directement dans l'enregistrement de fichier, de sorte qu'aucun cluster ne doit être alloué pour cela. Par conséquent, la taille sur le disque est zéro car il n'y a rien au-delà de l'enregistrement de fichier. Lorsque le fichier est suffisamment volumineux, NTFS le "rend non résident", lui attribue un ou plusieurs clusters (créant une "taille sur disque" non nulle) et crée une "paire de mappage" dans l'enregistrement de fichier à la place des données. pointez sur le cluster.

Les disques durs SSD ou Windows 10 n'affectent pas cela; c'est simplement une fonctionnalité NTFS. Pour en savoir plus: Les quatre étapes de la croissance du fichier NTFS .

Notez que la métrique "taille sur le disque" n'est pas tout à fait correcte. Par exemple, il n'inclut jamais la constante de 1 Ko que prend l'enregistrement de fichier NTFS. La métrique a été introduite dans Windows 95, qui n'utilisait pas NTFS et ne pouvait donc pas expliquer ce phénomène. il montrait simplement la taille du fichier arrondie au multiple suivant de la taille du cluster. Cet algorithme d'estimation a été appliqué à Windows 7, même si de nombreuses versions de Windows utilisaient entre elles le stockage NTFS et le stockage résident. Il a finalement été mis à jour dans Windows 8 pour compter les fichiers contenant uniquement des données résidentes comme étant de taille zéro sur le disque. Lectures supplémentaires: Qu'est-ce que 'Size on Disk'?

151
Ben N