Fichier informatique

Un article de Wikipédia, l'encyclopédie libre.

Un fichier informatique est une unité informationnelle physiquement stockée sur un support de mémoire de masse permanent (disque dur par exemple). Un fichier a généralement comme attributs : un nom ; un chemin d'accès ; une taille mesurée en octets ; une date de création et une de dernière modification. Plusieurs systèmes de fichiers multi-utilisateur rattachent aussi à chaque fichier un propriétaire et des droits d'accès. Enfin, chaque fichier a un contenu, soit une suite ordonnée d'octets, qui peut représenter n'importe quelle donnée binaire déterministe : un programme informatique, un document, un texte, etc.

Sommaire

[modifier] Intégrité des fichiers

Deux fichiers sont égaux s'ils ont la même taille, et les mêmes octets dans le même ordre. Comparer tous les octets de deux fichiers potentiellement identiques est malheureusement une opération longue (proportionnelle à la taille du fichier). Elle n'est pas non plus toujours possible, comme dans le cas du transport d'un fichier d'un point à un autre que ce soit via un support physique ou par le réseau.

Différentes méthodes sont utilisées pour vérifier l'intégrité d'un fichier :

  • la comparaison des noms : utile uniquement pour le dédoublonage et avec des risques d'erreur tant des faux positifs que des faux négatifs.
  • la comparaison des dates ou d'autres métadonnées associées au fichier : il existe un fort risque d'erreur, ces méta-données pouvant être modifiées indépendamment du contenu du fichier.
  • la comparaison de numéros informels de versions : la problématique est dans ce cas de repérer une version d'un fichier parmi plusieurs, le système nécessite de la rigueur l'utilisateur devant mettre à jour le numéro de version et ne protège en rien contre les modifications accidentelles, par exemple lors du transport)
  • le contrôle de la taille : deux tailles différentes garantissent que des fichiers diffèrent, mais cela ne permet pas de vérifier qu'ils sont identiques, il y a de plus des risques importants de faux positifs)
  • le checksum (somme de contrôle) : c'est une méthode simple pour s'assurer de l'intégrité d'un fichier après transport, la méthode n'offre cependant qu'une garantie limitée par le nombre de bits consacrés au checksum, il existe aussi un risque de mauvaise foi un fichier pouvant être facilement falsifié pour produire un cheksum donné)
  • la signature ou empreinte : Il existe plusieurs type de signatures: certaines comme les signatures MD5 ou SHA-1 sont similaires à un checksum mais bien plus complexes à falsifier. On compare le résultat d'un calcul de signature réalisé sur le contenu du fichier avec une signature obtenue depuis un site de confiance. D'autres systèmes de signature basés sur un système de clefs publiques valident non seulement l'intégrité d'un fichier mais aussi l'identité de son expéditeur.

Voir Intégrité (cryptographie)

Par ailleurs, un fichier peut être chiffré, ou compressé.

[modifier] Types de fichiers

On distingue habituellement les fichiers contenant des informations à l'usage exclusif du système de fichiers (appelés fichiers spéciaux) des autres fichiers (parfois appelés fichiers régulaires). Parmi les fichiers spéciaux on compte :

Les fichiers régulaires peuvent être divisés en fichiers texte et fichiers binaires. Les premiers ont un contenu pouvant être interprété comme du texte, la plupart du temps en codage ASCII ou une extension de ASCII (UTF-8 ou extension régionale). Des fichiers UTF-16 existent également.

Quelques exemples de fichiers textes :

  • fichiers XML ;
  • code source d'un programme ;
  • fichiers de configuration d'un logiciel pouvant être lus et édités par l'utilisateur ;
  • fichiers destinés à être lus par l'utilisateur.

Le contenu d'un fichier binaire n'est pas du texte et correspond souvent à un format précis. Voici quelques exemples de formats binaires usuels :

  • code objet ;
  • fichier de base de données structuré en enregistrements de taille fixe ou variable ;
  • document de traitement de texte ;
  • fichiers multimédias : images, sons, vidéos.

Pour déterminer le type d'un fichier, sous Unix et ses dérivés (Linux) ou avec Cygwin sous Windows, la commande

file

peut être utilisée.

[modifier] Accès

Les données dans les fichiers peuvent être en

[modifier] Différence entre fichier et document

Le système d'exploitation du Macintosh utilisait un format de fichier évolué (supporté par HFS et HFS+) qui tend à disparaître à partir de la dixième version. Ce format, outre une certaine quantité de métadonnées, prévoit deux formes de données : la branche des données (data fork), correspondant au fichier de n'importe quel système d'exploitation, et la branche des ressources (resource fork), sorte de répertoire contenant des plus petites unités de données appelées ressources, classées par leur type. L'avantage par rapport au fichier monolithique ordinaire est double : premièrement, l'application peut utiliser une API du système (Boîte à outils Macintosh) pour gérer les données en mémoire ; deuxièmement, l'utilisateur voit un simple fichier qu'il nomme document alors qu'il contient des données hétérogènes, à la manière d'un répertoire. Le tout est évolutif puisqu'on peut toujours ajouter des nouveaux types de ressources sans modifier le format original du fichier. À partir de Mac OS X la notion de bundle (document qui est, en fait, un répertoire), reprend les avantages principaux de la branche des ressources. Un document n'est donc plus forcément un fichier.

[modifier] L'usage des suffixes dans les noms de fichier

Afin de repérer le format interne d'un fichier, et donc de choisir le logiciel permettant d'exploiter son contenu, il est d'usage de lui donner un suffixe de fichier, souvent désigné par le terme extension. Il s'agit simplement d'un ensemble de caractères conventionnels identifiant un format de document et placé àaprès un point à la fin du nom du fichier. Dans certains cas il est possibles d'enchainer plusieurs suffixes de fichier.

Par exemple : mozilla-i686-pc-linux-gnu-1.5-sea.tar.gz

  • .gz indique que le fichier a été compressé au format gzip.
  • .tar indique que le fichier contient une arborescence de fichiers (archive au format tar).

Par contre, malgré le point .5-sea n'est pas ici un suffixe véritable. On doit en fait comprendre :

  • logiciel : mozilla
  • plateforme : i686-pc-linux-gnu
  • version : 1.5

sea indique une archive auto-extractible (self extractible archive), un fichier qui en s'exécutant lui-même, extrait son contenu dans un répertoire (folder).

[modifier] Accès par API

Les systèmes d'exploitation permettent aux utilisateurs, ainsi qu'aux développeurs de logiciels, d'accéder à un fichier dans un système de fichiers grâce à une norme de nommage et le manipuler conformément à une API.

L'API de base inaugurée par UNIX considère les fichiers comme plats, sans structure et ne gère pas le tamponnage niveau utilisateur. L'API de base ne permet guère plus que de définir une position courante, de lire ou écrire. On peut aussi tronquer ou étendre un fichier. À ce niveau un fichier n'est donc qu'une séquence d'octets.

C'est le rôle d'API de plus haut niveau que de se spécialiser pour différents types de fichiers. La simplification de l'API permet de considérer comme fichiers des entités qui n'appartiennent pas nécessairement à un système de fichiers (canaux d'entrées sortie, mémoire vive) et de manipuler ces entités de manière homogène.

Cela est à contraster avec des systèmes de générations précédentes avec des API spécialisées pour chaque composant physique ou imposant des structures aux fichiers sur disque (adressage séquentiel indexé par exemple)

Exemple :

  • sous Windows :
    • C:\WINNT\system\sys.ini - désignation absolue du fichier sys.ini se trouvant dans le répertoire C:\WINNT\system\ ;
    • sys.ini - désignation relative du fichier sys.ini, lorsque l'utilisateur se trouve dans le répertoire C:\WINNT\system\.
  • sous Unix :
    • /var/spool/mail/r4f - désignation absolue du fichier r4f se trouvant dans le répertoire /var/spool/mail ;
    • mail/r4f - désignation relative du fichier r4f se trouvant dans le sous-répertoire mail, lorsque l'utilisateur se trouve dans le répertoire /var/spool/.

Une fois le fichier désigné, on peut le soumettre à un logiciel, afin qu'il le manipule. Certains outils sont destinés à gérer l'emplacement des fichiers (déplacement, nommage, copie), d'autres gèrent le contenu des fichiers afin que l'utilisateur puisse les modifier ou simplement les consulter.

[modifier] Voir aussi

[modifier] Articles connexes