Comment la taille d'un fichier peut-elle être nulle?
Nous rencontrons tous de temps en temps une "situation" sur nos ordinateurs qui nous laisse complètement perplexe, comme un fichier de taille zéro, mais comment est-ce possible? Le message Q & R du SuperUser d'aujourd'hui a les réponses à la question d'un lecteur confus.
La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..
La question
Le lecteur superutilisateur Eugene S veut savoir comment la taille d’un fichier peut être nulle:
C'est quelque chose que j'ai rencontré et je ne pouvais pas penser à une explication appropriée. Si je crée un vide fichier * .txt sur mon ordinateur, puis regardez sa taille, il affiche une taille de zéro. Comment est-ce possible? Je veux dire même si le fichier lui-même est vide, il doit quand même avoir une certaine taille (même si c'est juste pour stocker son propre nom). Comment cela peut-il être expliqué?
Comment est-il possible pour un fichier d'avoir une taille de zéro?
La réponse
Les contributeurs du super-utilisateur David Schwartz et Cort Ammon ont la solution pour nous. Tout d'abord, David Schwartz:
C'est possible car il n'y a vraiment pas de fichier. Il y a juste une entrée de répertoire avec un nom et un propriétaire. L'entrée du répertoire est logiquement distincte du fichier. Par exemple, un même fichier peut avoir plusieurs noms dans plusieurs répertoires.
Malheureusement, le terme fichier n’est pas toujours utilisé pour désigner exactement la même chose. Mais la logique de taille de fichier provient du modèle où une entrée de répertoire attache un fichier à un répertoire, puis les noms de fichier et les métadonnées associées sont stockés dans le répertoire..
Suivi de la réponse de Cort Ammon:
La signification sémantique de la taille du fichier est différente de celle que vous utilisez.
Il existe de nombreuses tailles de fichiers qui ont un sens. Le plus commun, et celui que vous voyez ici, est le nombre d'octets dans le fichier. Si le fichier est un fichier texte vide, il peut en effet contenir zéro octet. Ce numéro est important pour les programmeurs car nous avons souvent besoin d'ouvrir un fichier, de lire toutes les données et de le fermer. Nous devons savoir combien d'octets de données seront dans le fichier afin de pouvoir planifier à l'avance..
Une autre signification découle de la façon dont la plupart des systèmes de fichiers stockent des données. La plupart des systèmes de fichiers stockent les données par blocs. Par exemple, le système de fichiers peut stocker des données dans des blocs de 64 Ko, ce qui signifie qu'il n'allouera jamais quoi que ce soit qui n'est pas un multiple même de 64 Ko. Cela semble inefficace, mais cela peut rendre la comptabilité un peu plus simple et souvent plus simple signifie plus rapide.
Une troisième signification, à laquelle vous tirez, correspond au nombre réel de bits requis sur le disque dur pour décrire la présence d'un fichier. Cela inclut des informations qui sont généralement stockées séparément du fichier. Par exemple, sous Linux, le concept de nom de fichier est stocké dans l'inode du répertoire contenant le fichier. [Sur la base des commentaires d'autres commentaires, ces informations sont (techniquement) stockées dans les données du répertoire. Quand j'ai écrit ceci, je pensais au cas du petit répertoire. Les données inférieures à 156 octets peuvent être stockées directement dans l'inode.] Ce n’est pas un sens courant, car il est extrêmement difficile à déterminer sans connaître les rouages extrêmement profonds de votre système de fichiers (comme la comptabilisation de l’espace nécessaire pour stocker toutes les autorisations sur le fichier). Cependant, si vous avez un disque dur de 1 000 000 octets et que vous voulez savoir quelle taille de fichier peut contenir sur ce disque dur, cela aura une signification très importante pour vous.!
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.