# Fichier informatique

Un fichier informatique est, au sens commun, une collection, un ensemble de données numériques réunies sous un même nom, enregistrées sur un support de stockage permanent, appelé mémoire de masse, tel qu'un disque dur, un cédérom, une mémoire flash ou une bande magnétique, une série de cartes perforées et manipulées comme une unité$^,$.
Techniquement, un fichier est une information numérique constituée d'une séquence d'octets, c'est-à-dire d'une séquence de nombres, permettant des usages divers.
En vue de faciliter leur organisation, les fichiers sont disposés dans des systèmes de fichiers qui permettent de placer les fichiers dans des emplacements appelés répertoires ou dossiers, eux-mêmes organisés selon le même principe de manière à former une hiérarchie arborescente.
Un fichier comporte un nom de fichier qui sert à désigner le contenu et à y accéder. Ce nom comporte souvent — notamment dans l'environnement Windows — un suffixe, l'extension, qui renseigne sur la nature des informations contenues dans le fichier et donc des logiciels utilisables pour le manipuler. Chaque fichier comporte un certain nombre de métadonnées — informations concernant les informations — telles que (suivant le système de fichier) la longueur du fichier, son auteur, les personnes autorisées à le manipuler, ou la date de la dernière modification.
L'essence du fichier est les informations qu'il contient. Le format de fichier est la convention selon laquelle les informations ainsi que les métadonnées sont numérisées et séquencées dans le fichier. Le format du fichier est propriétaire lorsque la convention n'est connue que de son auteur et n'a jamais été publiée. Le format du fichier est ouvert lorsque la convention est rendue publique en vue de permettre l'interopérabilité des logiciels le manipulant. Selon la nature et le format du contenu, les fichiers peuvent être qualifiés d'exécutables, de compressés, de textes, de documents, d'images, d'audio ou de vidéos.
Avant l'arrivée des ordinateurs, les fichiers étaient des piles de fiches réunies dans des classeurs. L'utilisation des ordinateurs et du stockage magnétique a facilité et accéléré la manipulation de grands fichiers tels que ceux utilisés dans le commerce et l'administration publique. La manipulation des fichiers est un des services classiques offerts par les systèmes d'exploitation.

## Contenu

Le contenu est l'essence du fichier. Il existe des centaines, voire des milliers de types de fichiers, qui se différencient par la nature du contenu, le format, le logiciel utilisé pour manipuler le contenu et l'usage qu'en fait l'ordinateur. La nature du contenu peut être des textes, des images, de l'audio ou de la vidéo$^,$.
Le format de fichier est la convention selon laquelle les informations sont numérisées et organisées dans le fichier et il sert d'emballage dans lequel sera mis le contenu ainsi que les métadonnées. L'extension, lorsqu'elle est présente, suffixe un nom du fichier, afin de renseigner sur le format du fichier et donc sur les logiciels pouvant être utilisés pour le manipuler. Chaque fichier peut être enregistré n'importe où dans le système de fichiers, et le logiciel qui le manipule propose un emplacement conventionnel de stockage. Certains formats sont dits propriétaires, c'est-à-dire que le format n'est connu que de son auteur et n'a jamais fait l'objet de publications.
Quelques catégories de fichiers$^,$ :
| Nom | Nature du contenu | Extensions |
| Exécutables | Fichiers qui peuvent être exécutés par l'ordinateur — autrement dit, des programmes. | .exe, .com, .sh, .bat, etc. |
| Compressés | Fichiers codés selon un procédé qui les rend plus petits que les fichiers originaux non codés. Un programme décompresseur est nécessaire pour effectuer le codage inverse et retrouver ainsi le fichier original. | .arc, .zip, .rar, .z, .arj, .sit, .gz, .7z, etc. |
| Images | Fichiers qui contiennent des images et du son sous une forme exploitable par l'ordinateur. De tels fichiers peuvent contenir des photos, des pictogrammes, des graphiques, des chansons, de la musique, des émissions radio ou des films. | .gif, .jpg, .bmp, .png, .eps, .tif, etc. |
| Audio | Fichiers qui contiennent des images et du son sous une forme exploitable par l'ordinateur. De tels fichiers peuvent contenir des photos, des pictogrammes, des graphiques, des chansons, de la musique, des émissions radio ou des films. | .au, .wav, .mp3, oga, .ram, etc. |
| Vidéo | Fichiers qui contiennent des images et du son sous une forme exploitable par l'ordinateur. De tels fichiers peuvent contenir des photos, des pictogrammes, des graphiques, des chansons, de la musique, des émissions radio ou des films. | .avi, .mpg, .mov, ... |
| Documents | Documents écrits, destinés à être imprimés et lus. Le fichier contient le texte ainsi que les informations de typographie (polices de caractères, couleurs). | .docx, .odt, .html, .doc, etc. |
| Texte | Fichiers texte brut qui contiennent des textes écrits, sans indications de typographie. Il peut s'agir de textes destinés aux utilisateurs, tels que des modes d'emploi ou des brouillons ; ou alors de textes destinés à l'ordinateur tels que du code source ou bien des données pour un programme. | .txt, .html, .ini, .csv, .log, .conf, .c, etc. |

## Histoire

Le fichage — la collecte de renseignements — est une pratique qui date de l'Antiquité. Les premières fiches au sens de supports d'informations étaient des plaquettes gravées par les Babyloniens en 400 av. J.-C.. À la fin du XIXe siècle, le terme fiche est (entre autres) défini comme une « feuille de carton sur laquelle on écrit des titres d'ouvrages, que l'on classe alphabétiquement dans des boîtes, et auxquelles on recourt pour trouver le volume dans la bibliothèque. On s'en sert aussi pour préparer des tables de matières. » De là est plus tard dérivé le terme fichier, qui désigne un recueil de fiches et, par extension, le meuble destiné à les contenir.
Au début du XXe siècle, avant l'arrivée des ordinateurs, l'utilisation de fiches documentaires était courante dans de nombreux domaines. Les informations étaient consignées sur des feuilles de papier ou de carton, des documents, des formulaires, des dossiers, rangés dans les tiroirs d'une armoire. C'est en particulier dans l'administration publique, le commerce et l'industrie que se trouvaient les plus grands fichiers. L'enregistrement puis la mise à jour de toutes les informations contenues sur les documents demandaient un effort considérable et prenaient beaucoup de temps. Ils ont été simplifiés par l'utilisation de cartes perforées, dont la lecture pouvait être réalisée par des machines$^,$.
En 1950, les fichiers informatiques se présentaient sous la forme d'une pile de cartes perforées, qu'un appareil lisait sans intervention humaine. Elles pouvaient ainsi être traitées 100 fois plus vite que si les informations avaient été introduites manuellement. De tels fichiers étaient cependant volumineux et ont rapidement été remplacés par des dispositifs de stockage magnétique, plus compacts et plus rapides : une bobine de bande magnétique peut contenir autant d'informations qu'une pile de cartes de 60 mètres de haut et le contenu de la bande magnétique peut être lu 100 fois plus vite que celui d'un fichier de cartes perforées.
L'organisation des fichiers sur bande magnétique était analogue à celle des fichiers de cartes perforées : ils étaient composés d'enregistrements, chaque enregistrement correspondant à un ensemble d'informations sur un même sujet. Chaque enregistrement contenait un certain nombre de champs, dans lesquels on trouvait des renseignements en rapport avec le sujet. Dans le cas d'un fichier concernant un étudiant, par exemple, les différents champs pouvaient contenir le nom, le prénom, l'âge, les résultats scolaires, etc. Diverses informations sur un même sujet pouvaient être réparties entre différents fichiers. Les fiches enregistrées sur bande magnétique étaient lues une par une, dans l'ordre ou elles étaient enregistrées sur la bande ; ce procédé appelé fichier séquentiel était utilisé pour le décompte des salaires, ainsi que des abonnements de téléphone et de gaz.
Depuis 1980, les systèmes d'exploitation tel Unix offrent la possibilité de stocker de grandes quantités d'informations, de les rechercher et de les classer d'une manière analogue à un bloc-notes dans une hiérarchie où chaque répertoire peut contenir d'autres répertoires$^,$.

## Mise en œuvre

Dans les années 1950 les informations destinées à être manipulées par ordinateur étaient des piles de fiches en carton. Puis ils ont été remplacés par des enregistrements numériques sur bande magnétique, ce qui a permis d'accélérer les calculs et économiser de la place. L'appareil de lecture lisait la bande par blocs d'environ 1000 octets, et la bande comportait un répertoire, sorte de catalogue qui contient le nom de tous les fichiers enregistrés sur la bande. Lors de la lecture, l'appareil déroule la bande, et lit le contenu du fichier dans l'ordre où il a été enregistré; c'est le procédé du fichier séquentiel.
En 2010, la manipulation de fichiers est un service classique offert par les systèmes d'exploitation. Le système d'exploitation permet de créer, d'altérer ou de supprimer des fichiers ainsi que des répertoires; il réserve la place nécessaire sur le support de stockage pour le contenu et les métadonnées et impose des conventions sur les noms des fichiers et des répertoires. Le support est divisé en blocs de taille fixe. Un logiciel entretient les structures nécessaires pour conserver la hiérarchie des répertoires et répartir les fichiers ainsi que les métadonnées sur le support de stockage.
L'enregistrement du fichier nécessite typiquement plusieurs blocs. le fichier est dit fragmenté si les blocs ne sont pas contigus. Les métadonnées qui accompagnent les fichiers sont : la longueur du fichier, son auteur, les personnes autorisées à le manipuler, la date de la dernière modification, ainsi que la liste des espaces libre sur le support.
Les systèmes d'exploitation Mac OS de Apple, créent deux hiérarchies par support de stockage: une est destinée à enregistrer le contenu du fichier, tandis que l'autre - le resource fork est destinée à contenir les métadonnées.
Le logiciel NTFS de Microsoft enregistre les métadonnées dans les fichiers $MFT et $Secure, les informations standard enregistrées dans ces fichiers sont les dates de création, de modification et de manipulation du fichier.
Divers formats de fichiers permettent d'enregistrer des métadonnées à l'intérieur du fichier. C'est le cas du format de documents PDF, des images numériques au format JPEG ainsi que des documents aux formats de Microsoft Office.
Dans le standard CIM Schema, la classe CIM_DataFile est attribuée aux fichiers informatiques. Elle représente une collection nommée de données ou de code exécutable, stockés sur des disques fixes locaux$^,$.

### Unix et les fichiers spéciaux

Outre les fichiers et les répertoires, les systèmes d'exploitation Unix permettent d'enregistrer des liens et des fichiers spéciaux.
Un lien permet de partager des fichiers entre plusieurs utilisateurs, il permet d'obtenir qu'un seul contenu soit disponible sous plusieurs noms différents situés dans des répertoires différents, sans avoir à effectuer des copies. Les changements effectués sur le contenu par un des utilisateurs sont immédiatement visibles par les autres. Il existe deux types de liens: le lien matériel (hard link) et le lien symbolique (symlink).
* le lien matériel est une deuxième étiquette pour un contenu. L'étiquette comprend le nom, l'auteur, et la date de la dernière modification.
* le lien symbolique contient le nom du répertoire dans lequel se trouve le fichier en question et fonctionne de la même manière que les raccourcis des systèmes d'exploitation Windows.
Les fichiers spéciaux sont une fonctionnalité propre aux systèmes d'exploitation Unix uniquement. Un fichier spécial représente une pièce de matériel tel qu'une imprimante ou un lecteur de cédérom, qu'il est alors possible de manipuler de la même manière qu'un fichier ordinaire : de lire et d'écrire sur le périphérique en utilisant les mêmes commandes que pour lire et écrire un fichier ordinaire.

### Fichiers et documents sur le Macintosh

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.

## Intégrité des fichiers

Deux fichiers sont identiques s'ils ont la même taille et s'ils contiennent les mêmes informations 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édoublonnage 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.
* la somme de contrôle (checksum) : 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 checksum donné.
* la signature ou empreinte : Il existe plusieurs types 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.
Par ailleurs, un fichier peut être chiffré ou compressé, ou les deux simultanément.

## 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.
Sous POSIX et Unix, les noms de fichiers sont considérés comme une séquence d'octet, alors que sous windows ils sont considérés comme de l'unicode. De ce fait, sous windows, les APIs d'accès aux fichiers sont doublées l'une permettant l'accès avec le nom unicode en UTF-16, l'autre permettant de nommer les fichiers à l'aide d'une chaîne d'octets à travers un mécanisme de locales.
Cela peut conduire à des incohérences ou des corruptions de noms de fichier d'une locale à l'autre.
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.