Fichier = collection organisée d'infos
de même nature
pouvant subir le même traitement
® stockage d'infos
volatiles
Ex : résultat qui s'affiche
persistantes
Ex : tables d'un SGBD
But : utiliser des fichiers externes comme données du pb
Ex : redirection d'un fichier de données vers un exécutable :
données.dat > a.out
organisation des fichiers
traitements de base des fichiers : algo, C++, COBOL
COBOL : gestion, finances, assurances
Fichiers non structurés : fichiers texte
= collection d'infos de nature diffte
Analyse caractère par caractère
ligne / ligne
buffer (d'une taille donnée) par buffer
puis retravail caractère par caractère
Fichiers structurés = collection d'infos de même nature = articles
® COBOL
= suite logique d'enregistrements de type identique ou non
Ex : table = suite d'enregistrements avec des types variés
· séquentiels
Enregistrements utilisés les uns après les autres (même fonctionnement que les bandes magnétiques)
· relatifs : accès direct
Enregistrements de longueur contante
Þ calaculer la place de l'enreg. recherché puis accès direct
· séquentiels indexés
Structure de donnée index
Un mécanisme calcule la place de l'enreg. recherché
Fichier physique Û adresse physique du fichier dans la mémoire
Û descripteur de fichier =
variable associée au fichier physique
fichier manipulé (on n'utilise pas le fichier physique)
ouvrir(descripteur,
nomfic, mode)
Mode
* lecture Û (D)
* écriture Û (R)
* lecture-écriture Û (D/0R)
Attn : l'ouverture en écriture efface le fichier s'il existe
Rq : on peut écrire à la fin
lire(descr,
nom-variable) Û nom-variable
¬ lire(descr)
écrire(descr,
valeur)
fermer
(descr)
eof(descr) retourne booléen
Þ test de fin de fichier "End Of File"
+ Opé de positionnement dans le fichier
Accès à un seul article à la fois et dans l'ordre
Chaque lire(descr, val) fait avancer d'un article (d'une case)
|
art. 1 |
art. 2 |
art. 3 |
|
![]()
![]()
![]()
![]()
lire(descr, val)
lire(descr, val)
lire(descr, val)
ouvrir(descr, fichierphysique, lecture)
variables nom-descr : descripteur de fichier
# include <fstream.h>
ifstream nom-descr ("nom-fic-physique") ;
ofstream nom-descr("nom-fic-physique");
nom-descr >>
val;
fic.eof()
nom-descr <<
val;