Vous êtes sur la page 1sur 6

Enregistrements - Fichiers

Objectif
Le but de ce TP est de vous faire dcouvrir les fichiers et les enregistrements.
Les fichiers permettent de sauvegarder et de rcuprer des donnes d'une excution l'autre.
Les enregistrements sont des types de variables qui serviront stocker diffrentes donnes, comme
les tableaux sauf qu'ici les donnes peuvent tre de types htrognes.

Pr-requis
Ce TP utilisera les notions d'IHM acquises au TP prcdent.

Travail prparatoire

Liste des fonctions/procdures disponibles pour les fichiers


En fonction du type de fichier, on a les procdures/fonctions suivantes qui peuvent tre utilises :
Fichier de type FichierEnEcriture

void ouvrirFichierEnEcriture(String nomFichier) : procdure recevant le nom du fichier crire.


Doit tre appel AVANT toute criture dans le fichier.
void ecrireChaineDansFichier(String txt) : procdure permettant d'crire la chaine txt dans le
fichier texte.
void ecrireEntierDansFichier(int nb) : procdure permettant d'crire l'entier nb dans le fichier
texte.
void ecrireDoubleDansFichier(double nb) : procdure permettant d'crire le double nb dans le
fichier texte
void fermerFichierEnEcriture() : procdure fermant le fichier (on ne doit plus essayer de
l'crire aprs!)

Fichier de type FichierEnLecture

void ouvrirFichierEnLecture(String nomFichier) : procdure recevant le nom du fichier lire.


Doit tre appel AVANT toute lecture depuis le fichier.
int lireEntierDepuisFichier() : fonction qui retourne l'entier lu depuis la ligne courante du fichier
(puis la ligne suivante devient la nouvelle ligne courante)
double lireDoubleDepuisFichier() : idem mais lit la ligne sous forme d'un double (a DOIT tre
un double, sinon a plante)
String lireChaineDepuisFichier() : idem mais lit la ligne sous forme d'une chaine (a marche
toujours)
void fermerFichierEnLecture() : procdure fermant le fichier (on ne doit plus essayer de le lire
aprs!)

Tutoriel sur les fichiers


On va vous montrer comment on peut enregistrer des informations dans des fichiers textes puis les
relire.

Dmarche suivre :
Avant toute opration de lecture ou criture dans un fichier, il faut au pralable l'ouvrir dans le bon
mode (lecture ou criture) et pour cela dclarer votre variable fichier avec le bon type
(FichierEnLecture ou FichierEnEcriture).
A la fin des oprations de lecture ou criture, il ne faut pas oublier de fermer le fichier.

Manipulations

Objectif :
On va faire un programme qui, quand on appuiera sur un bouton, crira un fichier avec deux mots
puis, quand on appuiera sur un autre bouton, relira ce fichier et affichera ces deux mots dans
l'interface.

Fichiers ncessaires :

Pour commencer, vrifiez dans votre rpertoire de travail la prsence des deux fichiers suivants :

FichierEnLecture.java
FichierEnEcriture.java

Ils doivent tre dans le sous-rpertoire de votre projet, celui dans lequel seront vos autres fichiers
JAVA.

Exemple :

votre projet se nomme tp3 et le dossier de travail est dans le rpertoire Z:\TP3\ExoFichiers\
copiez les 2 fichiers dans le rpertoire : Z:\TP3\ExoFichiers\tp3\src

Ces 2 fichiers ont t crs pour ajouter des objets simplifiant la manipulation de fichiers texte avec
java.

Vous allez raliser une IHM comme celle-ci :

Tutoriel 1 : Ecriture d'un fichier

Dans le projet courant (ou un nouveau si vous le souhaitez), commencez par crer une
nouvelle JFrame. Nommez-la TestFichier.
Ajoutez-y deux boutons (renommez-les btnEcriture et btnLecture) et deux labels (renommezles lblNom1 et lblNom2).
Ajoutez un gestionnaire d'vnement sur le bouton btnEcriture et mettez-y le code suivant :
FichierEnEcriture monFichier = new FichierEnEcriture();
monFichier.ouvrirFichierEnEcriture("test.txt");
monFichier.ecrireChaineDansFichier("Riri");
monFichier.ecrireChaineDansFichier("Fifi");
monFichier.fermerFichierEnEcriture();

La premire ligne permet de dclarer une variable nomme ici monFichier de type
FichierEnEcriture (vous comprendrez la syntaxe utilise dans le cours programmation objet).
Faites que ce fichier soit le programme par dfaut (voir FAQ)
Lancez le programme, appuyez sur le bouton btnEcriture et constatez qu'un fichier a t cr
dans votre rpertoire de travail et en l'ouvrant avec le blocnote, vrifiez qu'il contient bien deux
lignes avec Riri et Fifi.

Rsultat
En allant dans votre rpertoire de travail, vous constaterez qu'un nouveau fichier nomm test.txt a t
cr. Vous pouvez l'ouvrir l'aide du bloc note de Windows pour voir son contenu.

Tutoriel 2 : Lecture d'un fichier

Ajoutez un gestionnaire d'vnement sur le bouton btnLecture et mettez-y le code suivant :


FichierEnLecture monFichier = new FichierEnLecture();
monFichier.ouvrirFichierEnLecture("test.txt");
String nom1 = monFichier.lireChaineDepuisFichier();
String nom2 = monFichier.lireChaineDepuisFichier();
lblNom1.setText(nom1);
lblNom2.setText(nom2);
monFichier.fermerFichierEnLecture();

Lancez le programme, appuyez sur le bouton btnLecture et constatez que les deux mots
contenus dans le fichier sont affichs dans l'interface. Vous pouvez tenter de modifier le
contenu du fichier texte l'aide du blocnote afin de constater que ce sont bien les textes du
fichier qui sont affichs.

Tutoriel sur la notion d'enregistrement

Prsentation
Le projet qui vous est donn comporte :

une IHM : CarnetAdresse.java (jFrame)

un code dfinissant une personne : Personne.java.

Commencez par :

Tlcharger le projet
Dzipper l'archive.
Ouvrir le projet avec Netbeans
Ouvrir le fichier : Personne.java.

Le code Personne.java dfinit les informations d'une personne. Pour cela, on va 'enrichir' le
vocabulaire des types connus par Java (actuellement int, double, boolean, String, ...) en crant un
nouveau type : Personne.

Grace ce nouveau type, on pourra s'en servir par la suite pour crer des variables de ce type.

Le type Personne est comme un tableau, c'est dire que dans une variable de type Personne, on va
pouvoir stocker plusieurs informations (ici 3).

Ces informations sont :


- le nom de la personne (type : chane de caractres),
- le prnom de la personne (type : chane de caractres),
- son ge (type : entier)

Chaque variable dans le programme qui sera une Personne aura donc ces 3 informations.

Pour modifier ou consulter le nom d'une Personne il faut :

Dfinir une variable simple de type Personne :

Personne moi = new Personne();


Ceci cre un variable moi qui aura les 3 informations nom, prenom et age et rserve l'espace disque
pour stocker ces informations.

Nous accdons aux donnes comme suit :

moi.nom = "Toto"; //chaine de caractres


moi.prenom ="Tata"; //chaine de caractres
moi.age = 11; //entier

Tableaux

Si vous avez besoin de stocker plusieurs variables de type Personne, il est possible de dfinir des
tableaux de Personne comme suit :
Personne[] carnet = new Personne[100]; //cre un tableau de 100 Personnes
Carnet est donc un tableau de 100 cases, chaque case tant dimensionne pour recevoir une variable
de type Personne.

Remarques :

Vous devrez rserver l'espace mmoire pour chaque nouvelle case du tableau avec new
Personne() sinon vous ne pourrez pas remplir les champs nom, prenom et age.

Exemple :

le code suivant compile mais posera problme l'excution :

Personne[ ] carnet = new Personne[100]; //cr un tableau de taille 100


for (int i=0; i< NbPersonnes;i++)
{
carnet[i].nom = 'test'; //impossible car pas de rservation de l'espace mmoire sur le disque
}

alors que ce code est correct :

Personne[ ] carnet = new Personne[100]; //cr un tableau de taille 100


for (int i=0; i< NbPersonnes;i++)
{
carnet[i] = new Personne(); //rservation de l'espace mmoire pour les champs d'une personne
carnet[i].nom = 'test'; //ok
}

Rappel : vous devrez intgrer votre projet les fichiers suivants pour manipuler les fichiers

FichierEnLecture.java
FichierEnEcriture.java

Manipulez le projet qui vous est donn afin de mieux comprendre ces
notions.
Lancez l'excution du projet et suivez le fonctionnement des boutons qui vous sont donnes.
Ce projet comporte 2 boutons :
- le bouton ajouter permet de :
- crer une nouvelle personne dans un tableau de personnes.
- renseigner les champs nom, prenom, age de cette personne.
- le bouton afficher qui
- affiche s'il n'y a pas de personne saisie ou
- affiche la personne dans la case 0 du tableau.
Remarque
Les commentaires et les noms de variables explicites ont t choisis pour que la comprhension du
programme soit facilite pour les relecteurs.
Pensez faire de mme dans vos programmes.

Vous aimerez peut-être aussi