Partie II : 2) Les fichiers
En faite seul le disque dur est une mémoire qui dure dans le temps. Mais vous ne savez pas comment l'utiliser. Ceci ne sera plus vrai à la fin de ce chapitre

Théorie
La lecture et l'écriture de fichier est assez simple avec JB.
Lecture
Pour commencer nous allons ouvrir JB et enregistrer notre source (vide) dans un fichier.
Petit conseil :
Essayez des regrouper tous vos codes dans le même endroit. Par exemple :
C:VotreNomOuPseudoJustBasic
Je vous conseil aussi de mettre un sous dossier avec le nom du langage que vous utiliser. Car si par la suite vous voulez passer au C ou au C++ ça ferait crade de tout mettre dans le même dossier et il vous suffira de créer un nouveau dossier C:VotreNomOuPseudoC .
Enfin dans chaque dossier langage encore un nouveau dossier (c'est le dernier) pour chacun de vos projets.
C'est très pratique, n'hésitez pas à créer des dossiers pour chaque projet ce ne sera que plus facile pour vous y retrouver. Moi par exemple j'ai 30 dossiers dans JustBasic.
Un autre point + de cette méthode de rangement c'est que si un jour vous voulez formater votre PC mais garder vos codes il vous suffira de faire un ZIP ou un RAR du dossier VotreNomOuPseudo et de le mettre sur un clé USB
Donc si vous suivez ma méthode de rangement, enregistrez votre code dans :
C:VotreNomOuPseudoJustBasictutoFichiertutoFichier.bas
Sinon enregistrez le où vous voulez
Maintenant créez un nouveau fichier texte à coté de tutoFichier.bas, nommez le texte.txt, ouvrez le et mettez y les lignes suivantes :
Il se peut que vous ne puissiez pas voir l'extension, ce n'est pas grave, continuez comme si de rien était
texte.txt:
Je suis un Zéro
J'apprends tout à partir de zéro
Et Zozor c'est le plus beau et le plus fort
Car c'est la mascotte du site que tout le monde adore
Le Site du Zéro
J'apprends tout à partir de zéro
Et Zozor c'est le plus beau et le plus fort
Car c'est la mascotte du site que tout le monde adore
Le Site du Zéro
Enregistrez et c'est prêt, on peut maintenant commencer à apprendre à se servir de fichiers avec JB
Ouverture du fichier
Pour pouvoir lire un fichier il faut déjà l'avoir ouvert.
Voici comment faire :
Code VB :
open "texte.txt" for input as #monFichier
Je vais diviser cette ligne en trois parties :
- open "texte.txt"
Ça nous permet de dire quel fichier ouvrir. Ici c'est à l'aide d'un chemin relatif, c'est-à-dire que le fichier sera cherché à partir de l'exécutable (ou de notre fichier source). On aurait pu aussi donner le chemin complet depuis la racine du disque dur jusqu'à notre fichier. Par exemple :
Code VB :open "C:VotreNomOuPseudoJustBasictutoFichiertexte.txt" for input as #monFichier
Bon c'est plus long et en plus si vous changer de place votre fichier le programme plantera donc dans la plupart des cas on préférera utiliser des chemins relatifs. - for input
Ici on dit que l'on va ouvrir le fichier en mode lecture - as #monFichier
Enfin on donne un handle à notre fichier, c'est un identifiant qui va vous permettre d'accéder au fichier.
Si vous voulez ouvrir plusieurs fichiers en même temps il ne faut surtout pas que plusieurs fichiers aient le même identifiant
Lecture
Bon, maintenant que notre fichier est ouvert nous allons lire dedans.
Encore une fois c'est très simple :
Code VB :
input #monFichier, ligne$
Cette ligne permet de mettre une ligne du fichier dans la variable ligne$.
On utilise input puis le handle du fichier et on dit dans quelle variable enregistrer la ligne.
Il faut que le fichier soit correctement ouvert et en mode lecture autrement vous aurez le droit à un beau plantage.
Chaque fois que vous appelez input #monFichier, il va enregistrer la ligne et passer à la ligne suivante.
Si on appelle input #monFichier et qu'il n'y a plus de ligne après dans le fichier c'est le plantage assuré. Alors, pour vérifier que l'on est pas à la fin du fichier il existe une fonction : eof()
EOF veut dire End Of File soit Fin Du Fichier.
Elle attends un paramètre, l'identifiant du fichier et elle renvoi -1 quand on est à la fin du fichier.
Fermeture
Une fois que l'on a lut ce qu'il y avais dans le fichier on doit le fermer.
Toujours dans la simplicité :
Code VB :
close #monFichier
Lire tout le fichier
Et voici le code qui permet de lire tout ce qu'il y a dans le fichier :
Code VB :
open "texte.txt" for input as #monFichier while eof(#monFichier) <> -1 input #monFichier,ligne$ print ligne$ wend close #monFichier
On n'oublie pas d'ouvrir et de fermer le fichier.
On utilise un boucle While..Wend qui continuera tant que l'on n'a pas atteint la fin du fichier.
On lit la ligne dans le fichier et on l'affiche.
Maintenant on va rouvrir le fichier "texte.txt" et on va un peu changer sont contenu. Mettez ceci à la place :
Code :
Je suis un Zéro
J'apprends tout à partir de zéro
Et Zozor c'est le plus beau, c'est le plus fort
Car c'est la mascotte du site que tout le monde adore
Le Site du Zéro
Relancer votre programme (run).
Hé il y a un problème, dans la console j'ai :
Code :
Je suis un Zéro
J'apprends tout à partir de zéro
Et Zozor c'est le plus beau
c'est le plus fort
Car c'est la mascotte du site que tout le monde adore
Le Site du Zéro
Il y a un retour à la ligne alors qu'on a rien demandé !
Je vais vous dire d'où viens le problème, c'est input qui nous fait un caprice. En effet input ne s'arrête pas que lorsqu'il rencontre un retour à la ligne mais aussi lorsqu'il tombe sur une virgule. C'est balo, mais il y a une instruction qui, elle, lit toute la ligne sans s'occuper des virgules. Je vous présente line input. Sont utilisation est aussi simple qu'input :
Code VB :
open "texte.txt" for input as #monFichier while eof(#monFichier) <> -1 line input #monFichier,ligne$ print ligne$ wend close #monFichier
Et voila, là on a tout le fichier sans retour à la ligne gênant

Voila pour ce qui est de la lecture d'un fichier, maintenant l'écriture.
Écriture
Nous allons prendre le même fichier source que pour l'écriture alors veuillez supprimer le fichier "texte.txt".
Maintenant ouvrez "tutoFichier.bas" avec JB (ou LB).
Supprimez le code qui se trouve à l'intérieur et c'est bon.
Ouverture
L'ouverture pour l'écriture est aussi simple que l'ouverture que pour la lecture :
Code VB :
open "texte.txt" for output as #monFichier
Seul le mode d'ouverture change. Ici c'est Output alors que pour la lecture c'est Input.
Cette méthode d'ouverture efface complètement le contenu du fichier.
Mais si on ne veut pas tout effacer on fait comment ?
Un autre mode d'écriture est possible, c'est le mode Append.
Avec ce mode, ce que l'on va écrire dans le fichier sera placé à la suite de ce qu'il y a déjà dedans.
Pour ces deux modes : si le fichier n'existe pas il sera créé
Écriture
Nous allons utiliser la bonne vieille instruction print car, tout comme input , lorsqu'on l'utilise avec le handle d'un fichier elle n'écrit plus dans la console mais dans le fichier. (Je dis le handle du fichier car il existe aussi les handles des fenêtres et des objets graphiques mais c'est pour la partie 3 tout ça)
Nous aurons donc pour écrire dans un fichier :
Code VB :
print #monFichier, "Du texte, un nombre, une variable alphanumérique ou numérique"
Aller, avouez que ce n'est pas super compliqué quand même ^^
Fermeture
Code VB :
close #monFichier
Comme pour la lecture
Voila.
Quelques fonctions et instructions bien pratiques
Voici une liste des fonctions et des instructions qui permettent d'agir sur les fichiers et les dossiers.
Fonctions
eof()
Code VB :
eof(#handleDunFichier)
Déjà vu. Renvoi -1 lorsque la fin du fichier est atteinte.
lof()
Code VB :
lof(#handleDunFichier)
Renvoie le nombre de caractère du fichier. Donc sa taille en octet pour peu que un caractère tienne sur un octet.
input$()
Code VB :
input$(#handleDunFichier, nbrDeCaractere)
Renvoie le texte de nbrDeCaractere dans le fichier. A chaque appelle elle se déplace de nbrDeCaractere dans le fichier.
mkdir()
Code VB :
mkdir("temp")
Crée un dossier nommé "temps". Renvoie 0 si tout c'est bien passé.
rmdir()
Code VB :
rmdir("temp")
Supprime le dossier nommé "temp". Renvoie 0 si tout c'est bien passé.
Le dossier doit être vide pour être supprimé.
fileExists()
Code VB :
function fileExists(path$, filename$) files path$, filename$, info$() fileExists = val(info$(0, 0)) end function
Cette fonction n'est pas innée. Renvoie 0 si le fichier filename$ à l'adresse path$ n'existe pas.
Utilisation :
Code VB :
dim info$(10, 10) if fileExists("", "fichier.txt") then notice "fichier.txt existe" else notice "fichier.txt n'existe pas" end if
Le tableau info$() doit exister avant l'appelle de cette fonction.
Cette fonction utilise la très puissante instruction files,
Instructions
name
Code VB :
name ancienNom$ as nouveauNom$
Renomme le fichier ancienNom$ en nouveauNom$.
kill
Code VB :
kill nomDunFichier$
Supprime le fichier nomDunFichier$.
C'est bon, vous savez maintenant vous servir des fichiers.