Un fichier informatique est une suite de nombres compris entre 0 et 255 (chacun de ces nombres est ce qu'on appelle un octet). Suivant le type d'information que l'on veut stocker dans un fichier (texte brut, texte formatté, image, son, programmes, ...), les logiciels organisent les données de manière spécifique pour en faire des suites d'octets. La manière d'organiser un type de donnée pour en faire un fichier s'appelle un format.
Cette page a pour but d'expliquer ce qu'est un format de fichier (sans entrer dans les détails techniques rébarbatifs). Pour savoir plus concrètement comment ouvrir tel ou tel fichier, ou comment convertir mon fichier dans un autre format, allez voir le mémo sur les formats.
Les deux sous-sections qui suivent décrivent les deux grandes familles de formats informatiques.
Quand vous prenez un stylo et un papier et que vous écrivez des lettres, des chiffres, des symboles de ponctuation, par exemple pour noter un numéro de téléphone, un cours, une dissertation, ou une lettre, n'importe quel autre être humain sachant lire pourra comprendre les informations que vous aurez écrit, au moins en supposant qu'il parle la même langue que vous, cf. notre page sur les encodages et les langues.
Des suites de caractères (plus ou moins nombreux) griffonnés sur un papier ont donc ceci de commun qu'il s'agit de texte brut. Le format informatique (générique) le plus simple est ainsi constitué de suites de caractères, et de retours à la ligne. À chaque caractère correspond un ou plusieurs octets, c'est-à-dire des nombres compris entre 0 et 255, selon une règle définie par un encodage particulier (par exemple, dans l'encodage Latin-1 (le plus courant dans les pays occidentaux), un « A » est codé par le nombre 65 et à chaque caractère correspond un seul octet).
Lorsque vous avez un fichier sous un format « texte brut », vous pouvez le modifier avec n'importe quel éditeur de texte, de même que pour écrire sur un bout de papier, vous pouvez utiliser n'importe quel stylo.
On a vu que l'on pouvait noter tout et n'importe quoi dans un fichier texte, mais pour certains usages, on demande néanmoins à des fichiers au format texte de respecter certaines règles, une certaine syntaxe. Voici quelques exemples de tâches spécifiques qui utilisent des fichiers au format texte brut :
La page Web que vous lisez est au format HTML (plus précisément, il s'agit d'XHTML 1.0 Strict). En plus de contenir du texte en français « brut », certaines balises permettent de signifier à votre navigateur Web comment il doit afficher la page : une barre de navigation à gauche, nos choix de couleurs, etc... En voici un extrait :
<p> Quand vous prenez un stylo et un papier et que vous écrivez des lettres, des chiffres, des symboles de ponctuation, par exemple pour noter un numéro de téléphone, un cours, une dissertation, une lettre, n'importe quel autre être humain sachant lire (au moins en supposant qu'il parle la même langue que vous, cf. notre <a href="encodages.html">page sur les encodages et les langues</a>) pourra comprendre les informations que vous écrivez. </p>
Ainsi par exemple, ce qui se trouve entre <p> et </p> est un paraphaphe, ou encore un lien hypertexte est dans une balise <a>.
Quand vous envoyez un courrier électronique avec votre logiciel préféré, celui-ci va envoyer votre message dans un format particulier : les premières lignes constituent ce qu'on appelle l'en-tete du message, vient ensuite une ligne vide, et tout ce qui vient ensuite constitue le corps du message. L'en-tete du message sert à donner des informations sur l'expéditeur du message, la date, le sujet, l'encodage utilisé, etc... ainsi que quelques informations techniques. Voici un exemple :
Return-Path: <schtroumpfette@greement.non-existent.invalid> Delivered-To: scoubidou@greement.non-existent.invalid Received: (qmail 23265 invoked by uid 1033); 17 Sep 2003 15:55:14 -0000 From: schtroumpfette@greement.non-existent.invalid Date: Wed, 17 Sep 2003 17:55:14 +0200 To: Scoubidou <scoubidou@greement.non-existent.invalid> Subject: Bonjour Message-ID: <20030917155514.GA23246@greement.non-existent.invalid> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.4i Bonjour, J'aimerais discuter avec vous. -- La schtroumpfette
Les programmes que vous utilisez ont été développés dans différents langages : C, C++, Perl, Shell, etc... Les codes sources de ces programmes sont dans un format texte, ce qui ne les empêche pas de respecter une syntaxe précise. Voici à quoi cela peut ressembler :
/* bonjour.c : comment dire « Bonjour. » en C */ #include <stdio.h> int main (int argc, char **argv) { printf("Bonjour.\n"); return(0); }
#!/bin/sh # Comment dire « Bonjour. » en Shell exec echo Bonjour.
Suivant que le langage est interprêté ou compilé, il sera ou non nécessaire de convertir votre code source dans un format exécutable en utilisant un compilateur.
À l'opposé des formats textes, se trouvent les formats binaires. L'information que l'on stocke dans de tels fichiers ne se résume pas à des suites de caractères.
Avant de continuer, précisons que les noms de fichiers comportent souvent une extension, par exemple dans Le_coucou_au_fond_des_bois.ogg, l'extension est ogg. L'extension permet souvent de savoir rapidement à quel format on a à faire. Attention cependant au fait que parfois derrière un fichier d'une certaine extension peut se cacher sous un autre (cf. le programme file) !
Voici brièvement quelques exemples :
Une image peut-être stockée comme une grille de petits
points (pixels), chaque pixel ayant une certaine « couleur ». Une fois que
l'on a associé certains octets aux différentes couleurs
(par exemple 3 octets, un pour la composante rouge, un autre pour la
composante bleue, et un dernier pour la composante verte), on peut mettre
au début du fichier la largeur et la hauteur de l'image, et ensuite
parcourir l'image ligne par ligne, et écrire la séquence d'octets
qui correspond à chaque pixel de l'image. Le type de format que je viens
de décrire est extrêmement rudimentaire (dans cette famille de format, on
trouve le format bmp par exemple) ; des fichiers dans un tel
format occuperont beaucoup de place sur les disques durs, c'est pourquoi
il existe des formats qui contiennent des optimisations pour réduire
sensiblement la taille des fichiers d'images (exemples : les formats PNG, JFIF, JPEG), identifiés par les types MIME
image/png
et image/jpeg
respectivement, et
qui reçoivent le plus souvent les extensions png
et
jpg
).
C'est comme pour les images : on découpe le son en intervalles de temps très brefs (il y a le plus souvent autour de quarante mille intervalles par seconde) et on note la valeur du signal électrique correspondant, ce qui donne un nombre entier (avec signe) que l'on peut stocker. Pour un enregistrement en stereo, on note parallèlement les valeurs gauche et droite. Comme formats de ce type, on trouve les formats wav, au De même que pour les images, il existe des techniques de compression qui permettent de réduire considérablement la taille qu'occupent les fichiers sonores. On dispose ainsi des formats ogg et mp3.
Il existe d'autres manières de stocker de la « musique », les fichiers midi, où ne sont enregistrées que des suites d'indications sur les notes que les musiciens jouent sur leurs instruments (d'une certaine manière, ces fichiers contiennent l'information contenue sur une « partition »). Quand vous lisez ces fichiers avec un programme convenable, un synthétiseur (logiciel ou matériel) va convertir ces données en un véritable son.
Évidemment, la qualité musicale qui sort des hauts-parleurs quand vous jouez des fichiers midi est très loin d'être à la hauteur de ce qui parvient à vos oreilles quand vous écoutez un orchestre composé de musiciens talentueux !
Suivant la famille du système d'exploitation que vous utilisez (Unix, Windows, Mac), et même à l'intérieur d'une famille suivant la variante du système ou le type de processeur, les programmes sont stockés dans un format différent. La partie la plus imporante d'un fichier exécutable est la zone contenant le « langage machine » qui grosso modo contient la liste des instructions qui seront exécutées par le processeur. On ne modifie pas directement un fichier exécutable.
Certains logiciels de traitement de texte utilisent un format binaire pour stocker le texte avec son formatage (taille des fontes, caractères gras, italiques, etc...), plus précisément, ils utilisent plusieurs formats : d'une version à l'autre, le logiciel Microsoft Word utilise un format plus ou moins différent de la version précédente, ce qui pose beaucoup de problèmes, surtout si vous n'avez pas la version « dernier cri » du logiciel en question.
À l'opposé, certains traitements de textes utilisent un format texte,
de façon similaire au format HTML
utilisé sur le Web. C'est
par exemple le cas du programme
LaTeX. Toutes les informations
vous mettez dans un fichier LaTeX (extension tex
) sont
lisibles et modifiables dans votre éditeur de texte préféré, et au moins
vous être sûr que le format ne vas pas changer significativement d'une
version à l'autre. En voici un échantillon :
\documentclass{article} \usepackage[francais]{babel} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \begin{document} Ceci est un fichier \TeX. \end{document}
Vous devez utiliser le programme latex
pour mettre en page
votre fichier tex
. Il va ainsi écrire un fichier binaire
dans un format particulier dvi
qui contient essentiellement
beaucoup d'informations qui ressemblent à
« À tel endroit de la page numéro 42, afficher MU dans une fonte qui
fait 5.08 cm de hauteur. »
Ce sont des fichiers « prêts à être imprimés », ces fichiers contiennent toutes les instructions que l'on a pratiquement plus qu'à envoyer à l'imprimante (ce qui nécessite parfois une conversion).
pdf
)Mais, encore une fois, il existe plusieurs formats de ce type. Nous avons déjà évoqué ci-desus le format dvi utilisé par LaTeX. On dispose aussi du format pdf (Portable Document Format) développé par Adobe, vous avez très certainement déjà rencontré de tels fichiers en naviguant sur le Web. Les fichiers dvi et pdf sont au format binaire.
ps
)Un autre format important dans ce contexte est le format PostScript (lui aussi développé par Adobe). Il est depuis quelques années utilisé par la plupart des imprimates. Son grand avantage est qu'il est en mode texte et qu'il ne fait pas d'hypothèse sur la résolution de l'imprimante par exemple, contrairement aux formats utilisés auparavant pour envoyer des instructions aux imprimantes ! Le format PostScript est un véritable langage de programmation (si on veut dessiner 100 fois la même chose, on a pas besoin de réécrire 100 fois les mêmes instructions par exemple).
Dans certaines situations, il peut être commode de mettre plusieurs
fichiers dans un seul, on appelle cela une archive. En général,
au début d'un tel fichier se trouve les noms des fichiers contenus à
l'intérieur avec leur taille (ainsi que d'autres informations
techniques), puis viennent ensuite chacun des fichiers les uns à la suite
des autres. Le format le plus courant pour les fichiers archives sous
Unix est le format tar
. Dans le monde Windows, il est plus
souvent question de fichiers zip
.
Plus généralement, on a la notion de système de fichiers : il s'agit de
déterminer comment organiser les fichiers sur un disque dur et d'inscrire
les méta-informations, à savoir d'écrire quelque part la liste des
fichiers présents sur le disque ainsi que la position sur le disque où
ils sont écrits. Là, encore, de nombreuses possibilités existent : sous
Linux, on utilise en général ext2
, ext3
ou
ReiserFS
, sous Windows, il y a des systèmes de fichiers
fat
, NTFS
, etc...
Quand on a un fichier un peu long que l'on ne consulte pas régulièrement, on peut décider de le comprimer pour qu'il prenne moins de place sur le disque dur. Des outils sont faits pour cela. L'exemple typique de format compressé est donné par les fichiers « gzippés » (extension gz). Ainsi par exemple, un fichier PostScript dea.ps, une fois comprimé s'appelle dea.ps.gz.
Le clou du spectacle s'obtient en combinant les deux méta-formats évoqués
ci-dessus : comprimer un fichier d'archive comprenant plusieurs
fichiers. On obtient alors un fichier .tar.gz
(que certains
abrègent en .tgz
) ; c'est un général sous cette forme que
l'on peut télécharger le code source de la plupart des logiciels libres.