|-----------------------------------------------------------------| 
|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 sous­chaî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’est­ce 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 (sous­entendez 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
Précédent

- 153/220

Suivant