La page théorique sur les formats (enfin !).
This commit is contained in:
parent
dedb964fc7
commit
b00603acee
1 changed files with 351 additions and 2 deletions
|
@ -11,12 +11,361 @@
|
||||||
<h1>Formats de fichiers</h1>
|
<h1>Formats de fichiers</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<em>En construction...</em>
|
Un fichier informatique est une suite de nombres compris entre 0 et
|
||||||
|
255 (chacun de ces nombres est ce qu'on appelle un <a
|
||||||
|
href="&url.jargon;#octets"><em>octet</em></a>). 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 <em>format</em>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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
|
||||||
|
<a href="">mémo sur les formats</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Les deux grands types de formats</h2>
|
||||||
|
|
||||||
|
<p>Les deux sous-sections qui suivent décrivent les deux grandes familles
|
||||||
|
de formats informatiques.</p>
|
||||||
|
|
||||||
|
<h3>Les formats textes ou encore « lisibles par un humain »</h3>
|
||||||
|
|
||||||
|
<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, 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 <a href="encodages.html">page
|
||||||
|
sur les encodages et les langues</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Des suites de caractères (plus ou moins nombreux) griffonnés sur un
|
||||||
|
papier ont donc ceci de commun qu'il s'agit de <em>texte brut</em>. 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).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Lorsque vous avez une fichier sous un format « texte brut », vous
|
||||||
|
pouvez le modifier avec <em>n'importe quel <a
|
||||||
|
href="&url.tuteurs;unix/editeurs/">éditeur de texte</a></em>, de
|
||||||
|
même que pour écrire sur un bout de papier, vous pouvez utiliser
|
||||||
|
n'importe quel stylo.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>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 :
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Écrire des pages Web</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
La page Web que vous lisez est au format <tt>HTML</tt> (plus précisément,
|
||||||
|
il s'agit d'<tt>XHTML 1.0 Strict</tt>). En plus de contenir du texte en
|
||||||
|
français « brut », certaines <em>balises</em> 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>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<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>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Ainsi par exemple, ce qui se trouve entre <tt><p></tt> et
|
||||||
|
<tt></p></tt> est un paraphaphe, ou encore un lien hypertexte est dans
|
||||||
|
une balise <tt><a></tt>.</p>
|
||||||
|
|
||||||
|
<h4>Envoyer un courrier électronique</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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 :
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
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
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h4>Programmer</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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 :
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
/* bonjour.c : comment dire « Bonjour. » en C */
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main (int argc, char **argv) {
|
||||||
|
printf("Bonjour.\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
#!/bin/sh
|
||||||
|
# Comment dire « Bonjour. » en Shell
|
||||||
|
exec echo Bonjour.
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Suivant que le langage est interprêté ou compilé, il sera ou non
|
||||||
|
nécessaire de convertir votre code source dans un format éxécutable en
|
||||||
|
utilisant un <em>compilateur</em>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Les formats binaires</h3>
|
||||||
|
|
||||||
|
<p> À 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.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Avant de continuer, précisons que les noms de fichiers comportent souvent
|
||||||
|
une extension, par exemple dans <tt>Le_coucou_au_fond_des_bois.ogg</tt>,
|
||||||
|
l'extension est <tt>ogg</tt>. 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 <a href="formats-memo.html#file">
|
||||||
|
<tt>file</tt></a>) !
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Voici brièvement quelques exemples :
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Images bitmap</h4>
|
||||||
|
|
||||||
|
<p>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
|
||||||
|
(<em>par exemple</em> 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 <tt>bmp</tt> 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 : <tt>png</tt>,
|
||||||
|
<tt>jpg</tt>).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Son échantillonné</h4>
|
||||||
|
|
||||||
|
<p>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 <tt>wav</tt>, <tt>au</tt>
|
||||||
|
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 <tt>ogg</tt> et <tt>mp3</tt>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p> Il existe d'autres manières de stocker de la « musique », les
|
||||||
|
fichiers <tt>midi</tt>, 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.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Évidemment, la qualité musicale qui sort des hauts-parleurs quand vous
|
||||||
|
jouez des fichiers <tt>midi</tt> est très loin d'être à la hauteur de ce qui
|
||||||
|
parvient à vos oreilles quand vous écoutez un orchestre composé de
|
||||||
|
musiciens talentueux !
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Programmes éxécutables</h4>
|
||||||
|
|
||||||
|
<p>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 éxécutable est la zone contenant le
|
||||||
|
« langage machine » qui grosso modo contient la liste des instructions
|
||||||
|
qui seront éxécutées par le processeur. On ne modifie pas
|
||||||
|
directement un fichier éxécutable.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Cas particuliers</h2>
|
||||||
|
|
||||||
|
<h3>Traitements de texte</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Certains logiciels de traitement de texte utilisent un format binaire
|
||||||
|
pour stocker le texte avec son formattage (taille des fontes, caractères
|
||||||
|
gras, italiques, etc...), plus précisément, ils utilisent
|
||||||
|
<em>plusieurs</em> 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.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
À l'opposé, certains traitements de textes utilisent un format texte,
|
||||||
|
de façon similaire au format <code>HTML</code> utilisé sur le Web. C'est
|
||||||
|
par exemple le cas du programme
|
||||||
|
<a href="&url.tuteurs;logiciels/latex/">LaTeX</a>. Toutes les informations
|
||||||
|
vous mettez dans un fichier LaTeX (extension <code>tex</code>) 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 :
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
\documentclass{article}
|
||||||
|
\usepackage[francais]{babel}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[latin1]{inputenc}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
Ceci est un fichier \TeX.
|
||||||
|
\end{document}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Vous devez utiliser le programme <code>latex</code> pour mettre en page
|
||||||
|
votre fichier <code>tex</code>. Il va ainsi écrire un fichier binaire
|
||||||
|
dans un format particulier <code>dvi</code> 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. »
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Documents mis en page</h3>
|
||||||
|
|
||||||
|
<p>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).</p>
|
||||||
|
|
||||||
|
<h4>Portable Document Format (<code>pdf</code>)</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Mais, encore une fois, il existe plusieurs formats de ce type. Nous avons
|
||||||
|
déjà évoqué ci-desus le format <tt>dvi</tt> utilisé par LaTeX. On
|
||||||
|
dispose aussi du format <tt>pdf</tt> (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 <tt>dvi</tt> et <tt>pdf</tt> sont au
|
||||||
|
format binaire.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>PostScript (<code>ps</code>)</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Un autre format important dans ce contexte est le format
|
||||||
|
<em>PostScript</em> (lui aussi développé par Adobe). Il est depuis
|
||||||
|
quelques années utilisé par la plupart des imprimates laser. 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).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Méta-formats</h3>
|
||||||
|
|
||||||
|
<h4>Archives</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Dans certaines situations, il peut être commode de mettre plusieurs
|
||||||
|
fichiers dans un seul, on appelle cela une <em>archive</em>. 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 est le
|
||||||
|
format <code>tar</code>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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 <code>ext2</code>, <code>ext3</code> ou
|
||||||
|
<code>ReiserFS</code>, sous Windows, il y a des systèmes de fichiers
|
||||||
|
<code>fat</code>, <code>NTSC</code>, etc...
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Fichiers compressés</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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 <tt>gz</tt>). Ainsi par exemple, un fichier PostScript
|
||||||
|
<tt>dea.ps</tt>, une fois comprimé s'appelle <tt>dea.ps.gz</tt>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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 <code>.tar.gz</code> (que certains
|
||||||
|
abrègent en <code>.tgz</code>) ; 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.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Auteur : Joël Riou.
|
Auteur : Joël Riou.
|
||||||
Dernière modification le <date value="$Date: 2003-06-17 00:01:58 $" />.
|
Dernière modification le <date value="$Date: 2003-09-17 17:13:54 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Reference in a new issue