Section 3.4
Fichiers
Le moment est opportun pour introduire le concept de fichier. Vous avez certainement déjà tous créé, ouvert, modifié, enregistré, et fermé des fichiers. Mais au fond, qu'est-ce qu'un fichier ?
Un fichier est une suite finie de bits auquel on associe un nom et diverses autres informations (date de création, date de dernière modification, taille, etc.) qu'on appelle métadonnées. Cette suite de bits est généralement stockée sur un support de stockage (disque dur, clé USB, CD, DVD, etc.). Un fichier peut contenir n'importe quelle sorte d'information : du texte, des images, des sons, des vidéos, des programmes, etc. selon le type de fichier. L'information contenue dans un fichier est structurée selon le format du fichier.
Formats de fichiers
On appelle format de fichier la manière dont l'information est structurée dans un fichier. Le format d'un fichier est en principe déterminé par son extension (la partie du nom de fichier qui suit le dernier point).
♣︎ Exemple
Le format JPEG est un format de fichier pour les images.
Ce format est associé aux extensions .jpg
et .jpeg
.
Le format PNG est un autre format de fichier pour les images,
associé à l'extension .png
.
Une même image ne sera pas représentée de la même manière
selon qu'elle est enregistrée au format JPEG ou au format PNG.
Le format HTML est un format de fichier pour les pages web
(comme celle que vous êtes entrain de lire).
Ce format est associé à l'extension .html
.
En pratique, on fait souvent référence à un format de fichier en utilisant
l'extension associée au format.
On parle par exemple du format .jpg
ou du format .png
.
! Remarque
La notion de format de fichier est en essence assez similaire à celle de code. En effet, les deux concepts ont trait à la représentation sous forme de séquences de symboles, typiquement des bits, d'information. Dans les deux cas, on parle aussi d'encoder et de décoder de l'information.
Il y a cependant quelques différences importantes entre les deux notions :
- Un code représente un nombre fini de valeurs. Au contraire, les formats permettent le plus souvent de représenter une infinité de différents fichiers.
- Les formats de fichiers permettent de décrire de l'information de manière structurée. Un format de fichier permettra de décrire les différentes parties d'un fichier et leur signification. Dans un code, cette notion de structure est généralement moins présente.
Généralement, un format de fichier détermine quels codes sont utilisés pour représenter les différentes sortes d'information qu'un fichier peut contenir.
Le format .txt
Un des formats de fichier les plus simples est le format .txt
.
Ce format est utilisé pour les fichiers textuels.
Le format indique comment représenter
du texte sous forme de séquences d'octets.
Chaque caractère est représenté par un mot de code tiré
d'un certain code, comme par exemple le code ASCII
ou le code UTF-8 que l'on a vu dans la section précédente.
Les mots de codes des caractères sont ensuite simplement
concaténés pour former la séquence d'octets qui représente le texte.
À noter que le format .txt
ne spécifie pas
le code utilisé pour représenter les caractères.
Pour lire correctement un fichier .txt
,
il faut donc savoir quel code a été utilisé pour le créer.
Cette information est parfois indiquée dans les métadonnées
du fichier, et parfois les logiciels utilisés pour lire
le fichier doivent essayer de deviner le code utilisé.
Dans ce dernier cas, il peut arriver que le texte
ne soit pas affiché correctement.
! Remarque
Lorsqu'on décode un texte en utilisant un code qui n'est pas le bon, on obtient un résultat qui, dans le meilleur des cas contient quelques caractères inconnus, et dans le pire des cas est complètement illisible. À cause de la prolifération de différents codes sur le Web, il était courant de rencontrer des fichiers ou des pages Web qui ne s'affichaient pas correctement à cause d'un mauvais décodage. On appelle ce phénomène le mojibake, un nom emprunté au japonais qui signifie littéralement « changements de caractères ».
Formats textuels et formats binaires
Un format de fichier est dit textuel si
les fichiers qu'il décrit sont représentés
sous forme de séquences de caractères encodés.
Le format .txt
est un format textuel,
tout comme le format .html
(le format des pages Web) ou encore
.py
(le format des fichiers Python).
Nous aurons l'occasion dans la suite de ce chapitre de discuter de différents formats de fichiers.
Tailles de fichiers
On appelle la taille d'un fichier le nombre de bits qu'il contient. La taille d'un fichier est généralement exprimée en octets. Un octet est un groupe de 8 bits.
Les fichiers peuvent être de tailles très différentes. On peut avoir des fichiers de quelques octets comme des fichiers de plusieurs milliards d'octets. Pour cette raison, on utilise de nombreuses unités pour exprimer les tailles de fichiers. Ci-dessous se trouve un tableau récapitulatif des principales unités utilisées.
Unité | Symbole | Nombre d'octets | |
---|---|---|---|
octet | o | 1 | 100 |
kilo-octet | ko | 1'000 | 103 |
méga-octet | Mo | 1'000'000 | 106 |
giga-octet | Go | 1'000'000'000 | 109 |
tera-octet | To | 1'000'000'000'000 | 1012 |
peta-octet | Po | 1'000'000'000'000'000 | 1015 |
On utilise les mêmes unités pour exprimer la taille de la mémoire d'un ordinateur, que ce soit la mémoire vive ou la mémoire de masse.
! Remarque
Historiquement, ces unités ont été définies en utilisant les puissances de 2 au lieu des puissances de 10 par certaines personnes. Un kilo-octet était alors défini comme 1'024 octets (210 octets), un méga-octet comme 1'024 kilo-octets (220 octets), etc. Cette définition est aujourd'hui obsolète.
Pour le kilo-octet, la différence entre les deux définitions est presque négligeable (environ 2%). Cependant, pour de plus grandes unités la différence devient importante. Par exemple, un giga-octet vaut 1'000'000'000 octets selon la définition actuelle, mais 1'073'741'824 octets selon la définition obsolète, soit un écart d'à peu près 7%.
Pour faire la différence entre les deux définitions, on utilise parfois les préfixes kibi (kilo-binaire), mibi (méga-binaire), gibi (giga-binaire), etc. pour désigner les unités basées sur les puissances de 2.
Certains logiciels, notamment Windows de Microsoft, utilisent encore les anciennes définitions tout en utilisant les symboles des nouvelles définitions. Par exemple, Windows affiche 1 Go pour 1'073'741'824 octets. Cela peut être source de confusion, notamment lorsque son ordinateur affiche une capacité de disque dur inférieure à celle annoncée par le fabricant à cause de cette différence de définition.
Éditeurs hexadécimaux
Généralement les fichiers sont créés et lus par des programmes informatiques et les bits qu'ils contiennent ne sont pas directement visibles. Cependant, il existe des programmes qui permettent de visualiser les bits contenus dans un fichier. Parmi ces programmes, on trouve les éditeurs hexadécimaux.
! Remarque
Dans le cadre de ce cours, nous utiliserons l'éditeur hexadécimal HexEd.it qui est disponible en ligne sous la forme d'une application Web.

Ces programmes affichent le contenu d'un fichier sous la forme d'une suite de symboles hexadécimaux. Un symbole hexadécimal est un chiffre entre 0 et 9 ou une lettre entre A et F. Il y a donc en tout 16 symboles hexadécimaux différents. On appelle ce système de numération le système hexadécimal, ou base 16.
Ci-dessous sont présentés les représentations en base 10, base 16 et base 2 (sur 4 bits) des nombres de 0 à 15.
Décimal | Hexadécimal | Binaire (4 bits) |
---|---|---|
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Le système hexadécimal est très utilisé en informatique car il est extrêmement pratique pour représenter des bits et plus particulièrement des octets de manière compacte. Chaque symbole hexadécimal représente exactement un groupe de 4 bits, et à chaque groupe de 4 bits correspond exactement un symbole hexadécimal.
Par conséquent, chaque octet peut être représenté par une unique paire de symboles hexadécimaux, et chaque paire de symboles hexadécimaux correspond à un unique octet.
♣︎ Exemple
L'octet 10100001 est représenté en hexadécimal par A1. En effet, les 4 premiers bits (1010) correspondent à A et les 4 derniers bits (0001) à 1.
L'octet 74, représenté ici en hexadécimal, est représenté en binaire par 01110100.
Les éditeurs hexadécimaux permettent de visualiser le contenu d'un fichier sous la forme d'une suite de symboles hexadécimaux. Ils permettent également de modifier le contenu en modifiant ces symboles.
★ À essayer
Téléchargez le fichier ascii.txt puis ouvrez-le avec un éditeur de texte. Vous devriez voir le contenu du fichier, c'est-à-dire "The quick brown fox jumps over the lazy dog.".
Ouvrez ensuite le même fichier à l'aide d'un éditeur hexadécimal tel que HexEd.it. Vous devriez voir le contenu du fichier, mais cette fois-ci sous forme de nombres hexadécimaux. Chaque octet du fichier est représenté par deux symboles hexadécimaux et correspond à un caractère du fichier.
Ce fichier est un fichier texte. L'encodage utilisé pour les caractères de ce fichier est le code ASCII.
★ À essayer
Le fichier latin1.txt contient un extrait du livre La Nausée de Jean-Paul Sartre encodé en ISO-8859-1. Ouvrez ce fichier avec un éditeur de texte et observez le contenu. Il est possible que certains caractères ne s'affichent pas correctement, car votre éditeur de texte ne sait pas forcément qu'il doit interpréter le fichier avec le code ISO-8859-1. Il s'agit du problème d'encodage que nous avons évoqué précédemment. Dans certains logiciels, il est possible de manuellement spécifier le code utilisé par les caractères avant d'ouvrir le fichier.
Dans un second temps, ouvrez le fichier dans un éditeur hexadécimal tel que HexEd.it. Pouvez-vous retrouver le code des caractères non-ASCII dans le fichier ?