Fichiers

 Ce chapitre décrit les fichiers simples, de texte ou binaires et comment les créer et les utiliser. Comme Php est largement utilisé pour gérer des bases de données, il reconnait une quantité de formats, mais cela dépasse l'objectif de ce tutoriel, SQL et autres librairies d'accès aux données peuvent être étudiés dans le manuel Php.

 Scriptol dispose d'un type scalaire particulier pour les fichiers: file.
 Comme tous les objets scriptol, il dispose de méthodes propres.


Création

Un fichier est créé quand il est ouvert en écriture. Le mode d'accès d'un fichier est le second paramètre de la méthode "open".

file monfichier                                        ` crée une instance de la classe virtuelle file
monfichier.open("nom", "mode")         ` ouvre le fichier.
error ? print "non ouvert"                     ` test d'erreur.

Le nom est soit un nom de fichier local ou une URL commençant par ftp://
ou http:// (pour Scriptol Php seulement)


Les modes d'accès sont les suivants
"r"
"w"
"r+"
"a"
"a+"
lecture, à partir du début.
écriture à partir du début.
lecture ou écriture au du début du fichier.
écriture par ajout à la fin du fichier.
lecture à la position courant, ou écriture à la fin.


 Une fois le fichier ouvert, la position de lecture est soit le début du fichier, ou une position donnée par la méthode "seek".

Exemple:
monfichier.seek(250)
...lecture ou écriture en sautant les 250 premier octets.

Seek ne fonctionne qu'avec un fichier local.
Pour tester si un fichier est trouvé ou accessible, on utilise le drapeau caché qui est disponible par la structure de contrôle "error".


Lecture

 Un fichier peut être lu ligne par ligne, ou par blocs d'octets.
Dans le premier cas, la méthode readLine() est utilisée, sinon, on utilise la méthode read avec la taille du bloc en paramètre.

Exemple:
text t = readLine()                           ` lecture d'une ligne de texte.

Le code de fin de ligne est inclus dans le texte et peut être supprimé par la méthode de texte rTrim().

Autre exemple:
text t = read(1000) ` lecture de 1000 octets


Ecriture

 La méthode write place le contenu d'une variable de texte dans un fichier Une fois le fichier ouvert soit avec le mode "w" ou "a", et donc enregistré soit à partir de zéro ou à la fin de son contenu actuel, chaque nouvel appel à write ajoute un nouveau texte à la fin.

La gestion de fichier, fonctions relatives et méthodes
Fonctions utiles à la gestion de fichier
file fopen(text, text)
text rTrim(text)
boolean file_exists(text)
number filesize(text)
Crée ou ouvre un fichier selon le nom et le mode
Supprime le code de fin de ligne après lecture.
Retourne true si le fichier existe, false sinon.
Retourne la taille du fichier dont le nom est donné.
Les méthodes de la classe virtuelle file
void open(text, text)
void close()
text read(int)
int write(text)
text readLine()
int seek(int)
boolean file_eof()
Crée ou ouvre un fichier selon le nom et le mode.
Ferme le fichier.
Lit le fichier
Ajoute un texte dans le fichier, selon le mode.
Lit la ligne suivante dans un fichier de texte.
Pointe à la position donnée dans un fichier.
Retourne true (vrai) quand la fin de fichier est atteinte.


Exemple simple d'écriture séquentielle dans un fichier. text nomfic = "monfic"       ` nom du fichier
file sortie                             ` nom de l'objet virtuel
sortie.open(nomfic, "w")    ` ouvert en écriture
error ? die("impossible d'ouvrir " + nomfic)

for text ligne in maliste      ` un tableau quelconque
   sortie.write(ligne + "\n")   ` enregistrer l'élément suivant
/for
sortie.close()                        ` fermer le fichier

 

 Exercices

1) Ecrire la lecture d'un fichier de texte nommé "monfic.txt", et afficher le contenu.

Réponse