|-----------------------------------------------------------------|
|root
x0
0
Commentaire
/root
/bin/bash
|
|bin
x1
1
Commentaire
/bin
/bin/bash
|
|daemon x2
4
Commentaire
/sbin
/bin/bash
|
|rohaut x123 123 Compte Seb
/home/seb
/bin/ksh
|
|-----------------------------------------------------------------|
|1
891
11
22
33
45
6|
|
0
45
01
56
90
4|
Deux choses sautent aux yeux :
q Contrairement au format délimité, le format à largeur fixe consomme bien plus de mémoire. Dans cet exemple
64 octets sont utilisés pour chaque enregistrement. Dans le format délimité, la taille est variable, mais la
première ligne n’utilisait que 32 octets.
q Cependant, la récupération de tels enregistrements est bien plus simple, car vous connaissez à l’avance la
taille de chaque champ et donc toutes les positions pour découper vos enregistrements. Par contre, il faudra
penser à supprimer les éventuels espaces en trop, en supprimant les espaces finaux. Les langages proposent
souvent une fonction appelée « trim » qui le fait pour vous. Nul besoin donc de faire des recherches comme
précédemment.
Cette praticabilité compense l’utilisation de la mémoire, d’autant plus qu’elle coïncide fortement avec les types
structurés abordés dans le chapitre cinq. La lecture et l’écriture dans les fichiers se trouvent ainsi facilitées.
Un fichier à format fixe a aussi un autre avantage : il est possible de choisir parmi les deux formats, texte ou binaire,
pour l’enregistrer. Autrement dit soit ligne à ligne, soit contigus. Comme vous connaissez la taille exacte d’un
enregistrement, il suffit de dire que les octets 1 à 64 représentent le premier, 65 à 129 le deuxième, 130 à 194 le
troisième, et ainsi de suite. Vous devrez cependant faire attention avec les valeurs numériques, un entier occupant
généralement quatre octets, un réel double précision huit, etc.
Connaissant à l’avance les positions de chaque champ, vous utiliserez les sous programmes prédéfinis de chaque
langage pour découper une souschaîne de caractères équivalent à la fonction milieu du chapitre précédent.
3. Principes d’accès
a. Étapes de base
Pour travailler avec des fichiers, vous devrez respecter un certain ordre. Il vous faudra :
q Ouvrir le fichier, c’estàdire indiquer à quel fichier vous voulez accéder, et comment.
q Traiter le contenu du fichier : le lire, y écrire, bref toutes les opérations souhaitées pour accéder et manipuler
son contenu.
q Fermer le fichier, quand tous les traitements sont terminés.
L’étape la plus importante est la première. Comment ouvrir un fichier ? Si vous aviez le droit d’ouvrir seulement un
seul fichier, ce serait assez simple, mais qu’estce qui vous empêcherait d’en ouvrir trois ou quatre en même temps ?
b. Identificateurs de fichiers et canaux
Le programme doit pouvoir savoir dans quel fichier il travaille lorsqu’il s’agit d’y lire ou d’y écrire des données. Ceci
passe par l’utilisation d’un identifiant unique pour chaque fichier ouvert.
Dans la pratique, tous les langages, ou presque, en interne, utilisent la même méthode. L’accès à un fichier passe par
l’utilisation d’un canal. Dans la réalité, la vraie vie (sousentendez par là que l’informatique n’est pas la vraie vie, ou
plutôt un moyen mais pas une fin), un canal relie entre eux deux cours d’eau, ou à la mer, un lac, etc.
Dans ce canal transite, outre de l’eau, des bateaux, péniches, dans un sens et dans l’autre.
Dans le monde virtuel, un canal permet de faire transiter un flux d’information (les données) d’un programme vers un
fichier, d’un fichier vers un programme, d’un programme à un autre, entre deux fichiers, entre un programme et un
périphérique, etc. Par exemple, il existe un canal qui fait transiter ce que vous tapez au clavier vers le programme qui
attend une saisie, un autre canal pour transférer vers l’affichage ce que le programme doit afficher. Certains canaux
fonctionnent dans les deux sens, d’autres non.
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
153
|root
x0
0
Commentaire
/root
/bin/bash
|
|bin
x1
1
Commentaire
/bin
/bin/bash
|
|daemon x2
4
Commentaire
/sbin
/bin/bash
|
|rohaut x123 123 Compte Seb
/home/seb
/bin/ksh
|
|-----------------------------------------------------------------|
|1
891
11
22
33
45
6|
|
0
45
01
56
90
4|
Deux choses sautent aux yeux :
q Contrairement au format délimité, le format à largeur fixe consomme bien plus de mémoire. Dans cet exemple
64 octets sont utilisés pour chaque enregistrement. Dans le format délimité, la taille est variable, mais la
première ligne n’utilisait que 32 octets.
q Cependant, la récupération de tels enregistrements est bien plus simple, car vous connaissez à l’avance la
taille de chaque champ et donc toutes les positions pour découper vos enregistrements. Par contre, il faudra
penser à supprimer les éventuels espaces en trop, en supprimant les espaces finaux. Les langages proposent
souvent une fonction appelée « trim » qui le fait pour vous. Nul besoin donc de faire des recherches comme
précédemment.
Cette praticabilité compense l’utilisation de la mémoire, d’autant plus qu’elle coïncide fortement avec les types
structurés abordés dans le chapitre cinq. La lecture et l’écriture dans les fichiers se trouvent ainsi facilitées.
Un fichier à format fixe a aussi un autre avantage : il est possible de choisir parmi les deux formats, texte ou binaire,
pour l’enregistrer. Autrement dit soit ligne à ligne, soit contigus. Comme vous connaissez la taille exacte d’un
enregistrement, il suffit de dire que les octets 1 à 64 représentent le premier, 65 à 129 le deuxième, 130 à 194 le
troisième, et ainsi de suite. Vous devrez cependant faire attention avec les valeurs numériques, un entier occupant
généralement quatre octets, un réel double précision huit, etc.
Connaissant à l’avance les positions de chaque champ, vous utiliserez les sous programmes prédéfinis de chaque
langage pour découper une souschaîne de caractères équivalent à la fonction milieu du chapitre précédent.
3. Principes d’accès
a. Étapes de base
Pour travailler avec des fichiers, vous devrez respecter un certain ordre. Il vous faudra :
q Ouvrir le fichier, c’estàdire indiquer à quel fichier vous voulez accéder, et comment.
q Traiter le contenu du fichier : le lire, y écrire, bref toutes les opérations souhaitées pour accéder et manipuler
son contenu.
q Fermer le fichier, quand tous les traitements sont terminés.
L’étape la plus importante est la première. Comment ouvrir un fichier ? Si vous aviez le droit d’ouvrir seulement un
seul fichier, ce serait assez simple, mais qu’estce qui vous empêcherait d’en ouvrir trois ou quatre en même temps ?
b. Identificateurs de fichiers et canaux
Le programme doit pouvoir savoir dans quel fichier il travaille lorsqu’il s’agit d’y lire ou d’y écrire des données. Ceci
passe par l’utilisation d’un identifiant unique pour chaque fichier ouvert.
Dans la pratique, tous les langages, ou presque, en interne, utilisent la même méthode. L’accès à un fichier passe par
l’utilisation d’un canal. Dans la réalité, la vraie vie (sousentendez par là que l’informatique n’est pas la vraie vie, ou
plutôt un moyen mais pas une fin), un canal relie entre eux deux cours d’eau, ou à la mer, un lac, etc.
Dans ce canal transite, outre de l’eau, des bateaux, péniches, dans un sens et dans l’autre.
Dans le monde virtuel, un canal permet de faire transiter un flux d’information (les données) d’un programme vers un
fichier, d’un fichier vers un programme, d’un programme à un autre, entre deux fichiers, entre un programme et un
périphérique, etc. Par exemple, il existe un canal qui fait transiter ce que vous tapez au clavier vers le programme qui
attend une saisie, un autre canal pour transférer vers l’affichage ce que le programme doit afficher. Certains canaux
fonctionnent dans les deux sens, d’autres non.
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
153
