(Un peu tard pour la réponse ...)
Comment un fichier peut-il être de taille zéro est un peu plus compliqué que prévu par les réponses ci-dessus. La question est étiquetée Win7, mais il peut être utile d' examiner d'autres systèmes de fichiers "plus simples" tels que FAT ou NTFS , car les concepts sont similaires.
Le disque ne "sait" pas ce qu'est un fichier et ce qu'est un répertoire; c'est toutes les données en petits blocs. Le système d'exploitation distingue la signification des blocs de données. Les quelques premiers sont spéciaux, mais le reste des blocs contient des informations sur les données (par exemple: nom du fichier, longueur du fichier, premier bloc de données contenant les données) ou les données elles-mêmes.
Un répertoire est un "fichier" spécial dont le système d'exploitation comprend les "données" est un bloc d'informations contenant des informations sur les fichiers, pas leur contenu. Une bonne analogie est une bibliothèque physique et le catalogue de cartes. Considérez les blocs d’information comme le catalogue de cartes et les étagères comme les blocs de données (le catalogue de cartes repose également sur une structure semblable à une étagère).
Lorsque vous "créez" un fichier (par exemple avec la touch
commande UNIX ), le système d'exploitation crée d'abord une entrée dans un bloc d'informations (répertoire), avec les éléments suivants:
- Nom = Mon_Fichier.txt
- Longueur = 0
- Bloc de données de départ = N / A
- Informations supplémentaires (propriétaire, autorisations, date de création / mise à jour / modifiée), etc.
Ce n'est que s'il y a des données à "écrire" qu'il tente de trouver un bloc de données vide pour stocker les données. Mais les blocs de données ont des tailles fixes (disons 32 Ko), ce qui est pratique pour le disque et le système d'exploitation pour le lire. Si vous n'écrivez que "Hello", la majeure partie du bloc est "vide" (en réalité, il ne s'agit pas de zéros, mais de déchets de ce qui existait auparavant), de sorte que le tableau met également à jour la taille à la longueur (disons 5 caractères + Fin de Fichier) pour ne pas avoir les mauvaises choses.
Lorsque vous mettez à jour le "fichier" à une longueur> taille de bloc, le système d'exploitation écrit les données dans le nouveau bloc et met à jour un bloc de données pour indiquer que le fichier continue sur le prochain bloc APRÈS le premier (et ainsi de suite) et que la longueur est mise à jour. nouvelle longueur (les détails diffèrent).
Vous vous retrouvez avec une collection de blocs de données d'informations (répertoires ou listes) contenant des informations sur les chaînes de blocs de données (contenu du fichier).
Logiquement, cela explique également pourquoi un déplacement de fichier sur le même système de fichiers clignote rapidement, alors qu'une copie prend beaucoup de temps. Le système d'exploitation n'a qu'à modifier 2 blocs de répertoire pour supprimer l'entrée d'un répertoire (bloc de données d'informations) et l'ajouter à un autre. Supprimer un fichier: supprimez simplement l'entrée dans le bloc de répertoires, libérant ainsi les blocs de données de fichiers à réaffecter.
ps: Le fait que le catalogue de cartes comporte une entrée pour un livre ne signifie pas que celui-ci est sur l'étagère (extrait ou perdu peut-être); taille de fichier 0.
pps: Un livre égaré dans une bibliothèque implique une bibliothèque de recherche, ou en termes informatiques: chkdsk ou disque de réparation!
Pour mieux comprendre, renseignez-vous sur les inodes UNIX ou apprenez comment les systèmes de contrôle de versions (ClearCase, TFS, Git, etc.) gèrent non seulement les fichiers et les répertoires, mais également les versions de fichiers et même les versions de répertoires. Dans la plupart des cas, tout est stocké dans une base de données et présenté à l'utilisateur sous forme de structure de répertoire classique et de fichiers!