thome←Formate(thome,15)
tshell←Formate(tshell,15)
ligne←tlogin&tpwd&tuid&tgid&tcmt&thome&tshell
/* Ecriture */
Ecrire(fic,ligne)
Fermer fic
Fin
L’instruction Ecrire rajoute l’enregistrement dans le fichier, puis se place à la suite de l’enregistrement créé. Aussi si
vous exécutez une nouvelle instruction Ecrire, le nouvel enregistrement se placera à la suite du précédent. Attention
cependant au mode d’ouverture du fichier ! En mode lecture/écriture, l’enregistrement ne sera pas ajouté à la fin du
fichier (contrairement au mode ajout) mais à la position courante : vous écrasez les enregistrements existants, les
uns après les autres.
Un programme assez simple consiste à recopier les enregistrements d’un fichier dans un autre. Pour rajouter un tout
petit peu de piment, pourquoi ne pas dire que si le champ mot de passe contient un "d", l’enregistrement doit être
détruit ? Il suffit de ne pas le recopier dans le nouveau fichier.
Programme COPIE
Var
fic,fic2 :fichiers séquentiels
nom,nom2 :chaînes
ligne,pwd:chaînes
Début
nom←"passwd"
nom2←"backup"
Ouvrir nom dans fic en lecture
Ouvrir nom2 dans fic2 en Ajout
Tant que NON EOF(fic) Faire
Lire(fic,ligne)
pwd ←trim(milieu(ligne,9,1))
Si pwd<>"-" Alors
Ecrire(fic2,ligne)
FinSi
FinTantQue
Fermer fic
Fermer fic2
Fin
Cette stratégie de recopie a un avantage : elle n’utilise que très peu de mémoire. Elle a cependant un très gros
inconvénient, elle nécessite la présence à un moment donné de deux fichiers sur le disque dur. Dans le traitement
précédent le but était de supprimer les lignes inutiles du premier fichier. Au final ce genre de traitement est en trois
étapes :
q Recopie des enregistrements de passwd vers backup.
q Suppression du fichier passwd.
q Renommage de backup en passwd.
Cette méthode sera à privilégier sur des fichiers très imposants, plusieurs milliers (ou millions) de lignes, si la mémoire
ne doit pas être trop chargée.
Une autre méthode consiste à tout traiter en mémoire. Elle se fait en deux étapes :
q Lecture intégrale du fichier passwd et stockage des lignes dans un tableau.
q Réécriture du fichier passwd avec les bons éléments du tableau.
Note : Certains langages font une distinction entre le mode d’écriture, généralement destructeur (le fichier est
purgé vidé avant l’ajout de données) et un mode d’ajout étendu, où le fichier peut aussi être lu… Prudence.
Traiter sur disque ou en mémoire ?
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
158
tshell←Formate(tshell,15)
ligne←tlogin&tpwd&tuid&tgid&tcmt&thome&tshell
/* Ecriture */
Ecrire(fic,ligne)
Fermer fic
Fin
L’instruction Ecrire rajoute l’enregistrement dans le fichier, puis se place à la suite de l’enregistrement créé. Aussi si
vous exécutez une nouvelle instruction Ecrire, le nouvel enregistrement se placera à la suite du précédent. Attention
cependant au mode d’ouverture du fichier ! En mode lecture/écriture, l’enregistrement ne sera pas ajouté à la fin du
fichier (contrairement au mode ajout) mais à la position courante : vous écrasez les enregistrements existants, les
uns après les autres.
Un programme assez simple consiste à recopier les enregistrements d’un fichier dans un autre. Pour rajouter un tout
petit peu de piment, pourquoi ne pas dire que si le champ mot de passe contient un "d", l’enregistrement doit être
détruit ? Il suffit de ne pas le recopier dans le nouveau fichier.
Programme COPIE
Var
fic,fic2 :fichiers séquentiels
nom,nom2 :chaînes
ligne,pwd:chaînes
Début
nom←"passwd"
nom2←"backup"
Ouvrir nom dans fic en lecture
Ouvrir nom2 dans fic2 en Ajout
Tant que NON EOF(fic) Faire
Lire(fic,ligne)
pwd ←trim(milieu(ligne,9,1))
Si pwd<>"-" Alors
Ecrire(fic2,ligne)
FinSi
FinTantQue
Fermer fic
Fermer fic2
Fin
Cette stratégie de recopie a un avantage : elle n’utilise que très peu de mémoire. Elle a cependant un très gros
inconvénient, elle nécessite la présence à un moment donné de deux fichiers sur le disque dur. Dans le traitement
précédent le but était de supprimer les lignes inutiles du premier fichier. Au final ce genre de traitement est en trois
étapes :
q Recopie des enregistrements de passwd vers backup.
q Suppression du fichier passwd.
q Renommage de backup en passwd.
Cette méthode sera à privilégier sur des fichiers très imposants, plusieurs milliers (ou millions) de lignes, si la mémoire
ne doit pas être trop chargée.
Une autre méthode consiste à tout traiter en mémoire. Elle se fait en deux étapes :
q Lecture intégrale du fichier passwd et stockage des lignes dans un tableau.
q Réécriture du fichier passwd avec les bons éléments du tableau.
Note : Certains langages font une distinction entre le mode d’écriture, généralement destructeur (le fichier est
purgé vidé avant l’ajout de données) et un mode d’ajout étendu, où le fichier peut aussi être lu… Prudence.
Traiter sur disque ou en mémoire ?
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
158
