Exercice 1: Fichiers D Octets: Travaux Pratiques Programmation Orientée Objet Avancée Année 2022/2023

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

Travaux pratiques Programmation Orientée Objet Avancée année 2022/2023

TP n°5

Exercice 1 : Fichiers dʼoctets


1). Écrire une classe Fichier1 contenant une seule procédure copieFichier (String source, String
dest) qui permet de copier le contenu du fichier source dans le fichier dest. Vous pouvez utiliser les
classes FileInputStream et FileOutputStream.

– La fonction read de la classe FileInputStream permet de lire un octet et le retourner sous


forme d’un entier. Cette fonction retourne -1 si la fin du fichier est atteinte.
– La fonction write (int c) de la classe FileOutputStream permet d’écrire l’entier passé en
paramètre dans le fichier.
– La méthode close permet de fermer un fichier déjà ouvert.
2). Écrire une clase TestFichier1 qui contient la méthode main. Le fichier source et destination
doivent être passé comme des arguments de la méthode main.
– args.length : le nombre d'arguments du programme
– args[0] : le 1er argument
– args[1] : le 2ème argument
3). On utilise maintenant deux objets de type JFileChooser pour récupérer le fichier source et
destination. On utilise la syntaxe suivante :
JFileChooser dialogue = new JFileChooser(".");
//le point représente le répertoire courant
if (dialogue.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
//Si l’utilisateur choisit un fichier et valide avec OK
File fichier = dialogue.getSelectedFile();//On récupère le fichier choisit

Exercice 2 : Fichiers d’objets élémentaires


Écrire une classe Fichier2 qui contient :

– Une procédure creerFichier (String nomFic, int nb) qui permet de créer un fichier nomFic
contenant nb entiers (compris entre 0 et 1000) générés aléatoirement. Vous pouvez utiliser la
classe DataOutputStream dont le constructeur accepte en paramètre un objet de type
FileOutputStream. La méthode writeInt(int n) permet d’écrire l’entier n dans le fichier.
– Une procédure lireFichier (String nomFic) qui permet de lire le contenu du fichier créé par
la procédure précédente et affiche son contenu à l’écran. Vous pouvez utiliser la classe
DataInputStream qui permet de lire les entiers à l’aide de la fonction readInt() qui
retourne l’entier lu. Le constructeur de la classe DataInputStream accepte en paramètre un

page n 1
Travaux pratiques Programmation Orientée Objet Avancée année 2022/2023

objet de type FileIntputStream. Il faut savoir qu’une exception EOFException est


déclenchée quand la fin du fichier est atteinte. Il faut intercepter cette exception et fermer le
fichier quand elle est déclenchée.
Exemple pour la Génération des nombres aléatoires :
Random r = new Random();
for(int i=0; i<nb; i++) System.out.print (r.nextInt(1000));
Exemple pour la fermeture d’un fichier :
DataInputStream fi = new DataInputStream(new FileInputStream(nom));

try { // On affiche tous les entiers


while (true) { // boucle sans fin
System.out.println(fi.readInt());
}
} catch(EOFException e) { // la fin du fichier est atteinte
fi.close();
}

Exercice 3 : Fichiers d’objets


Écrire une classe Fichier2 qui contient :

– Une procédure creerFichier (String nomFic, int nb) qui permet de créer un fichier nomFic
contenant nb objets de type Point (classe vue précédemment). Les coordonnées des points
sont générées aléatoirement. Vous pouvez utiliser la classe ObjectOutputStream dont le
constructeur accepte en paramètre un objet de type FileOutputStream. La méthode
writeObject(Object p) permet d’écrire l’objet passé en paramètre dans le fichier. Il faut que
la classe Point implémente l’interface Serializable.
– Une procédure lireFichier (String nomFic) qui permet de lire le contenu du fichier créé par
la procédure précédente et affiche son contenu à l’écran. Vous pouvez utiliser la classe
ObjectInputStream qui permet de lire les objets à l’aide de la fonction readObject() qui
retourne l’objet lu. L’objet retourné est de type Object, il faut donc penser à faire le
transtypage. Le constructeur de la classe ObjectInputStream accepte en paramètre un objet
de type FileIntputStream. Il faut savoir qu’il faut intercepter deux exceptions :
EOFException et ClassNotFoundException.

Un exemple pour la fermeture d’un fichier :


try {
while (true){
Point2 p = (Point2) fi.readObject();
}
catch(EOFException e) { fi.close(); }
catch(ClassNotFoundException e) { }

page n 2

Vous aimerez peut-être aussi