I3 Java - TP 5
Extrait du La page de Julien Seinturier
http://seinturier.fr/spip/spip.php?article62
I3 Java - TP 5
- Enseignements - Archives - 2011 / 2012 - IUT-AIX I3 Java -
Date de mise en ligne : lundi 11 juin 2012
Description :
Les entrées / sorties depuis un fichier en Java
Copyright © La page de Julien Seinturier - Tous droits réservés
Copyright © La page de Julien Seinturier Page 1/5
I3 Java - TP 5
Cette page décrit la mise en place d'un module basique d'entrée / sortie vers des fichiers depuis un programme
Java.
1. Notion de fichier
En java, la notion de fichier est représentée par la classe File du package java.io.
Le package java.io contient également de nombreuses classes destinées aux entrées / sorties sur des fichiers.
1.1. Structure de flux de données : Stream
En java, les opération d'entrées / sorties reposent sur la notion de flux de données ou Stream.
Les flux peuvent être de 2 natures :
les flux d'entrées ou InputStream qui permettent d'importer des données à l'intérieur d'un programme Java ;
les flux de sortie ou OutputStream qui permettent d'exporter des données depuis un programme Java ;
L'utilisation des flux d'entrées ou des flux de sorties tels quels est fastidieuse (écriture d'octets seulement, pas de
mise en forme possible, ...). Des objets encapsulant permettent alors d'ajouter des fonctionnalités au flux de bases :
les lecteur / écrivains.
1.2. Lecteurs et écrivains : Reader / Writer
L'utilisation directe de flux n'est pas conseillée car trop proche du système. Le cadre Java propose donc des objets
de plus haut niveau permettant la lecture (Reader) ou l'écriture (Writer) depuis un flux.
Des readers et les writers sont disponibles selon le type de données que l'on veut lire / écrire (Chaines de
caractères, fichiers textes, document ZIP, ...).
2. Mise en place d'une classe simple de lecture /
écriture
Le code suivant :
package tp5;
import java.io.BufferedReader;
import java.io.BufferedWriter;
Copyright © La page de Julien Seinturier Page 2/5
I3 Java - TP 5
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
/**
* Cette classe permet d'ilustrer de manière simple la lecture et l'ecriture de données (ici des chaines de
caractères) dans un fichier.
* @author Julien Seinturier
*
*/
public class FileIO {
/**
* Ecris la chaine de caractere <code>str</code> dans le fichier <code>file</code>
* @param file le fichier dans lequel ecrire
* @param str la chaine de caractere a ecrire.
*/
public void write(File file, String str){
try {
// Classe permettant l'ecriture dans un fichier
FileWriter fw = new FileWriter(file);
// Classe encapsulant un writer en y ajoutant un buffer
BufferedWriter bw = new BufferedWriter (fw);
// Classe encapsulant un writer en y ajoutant une gestion avancee des
// chaines de caracteres.
PrintWriter out = new PrintWriter(bw);
// Ecriture de la chaine de caractère dans le writer "out"
out.println(str);
// Demande au writer de finaliser toutes les ecritures
out.flush();
// Fermeture du writer et de toutes les ressources associees (writers encapsules et fichier)
out.close();
} catch (Exception e){
System.err.println("Impossible d'ecrire dans le fichier "+file.getPath()+": "+e.getMessage());
e.printStackTrace(System.err);
}
}
/**
* Lis le fichier <code>file</code> et retourne son contenu en temps que chaine de caractère.
* @param file le fichier à lire.
* @return le contenu du fichier en temps que chaine de caractère.
Copyright © La page de Julien Seinturier Page 3/5
I3 Java - TP 5
*/
public String read(File file){
String str = null;
// Variable spécifiant le caractère de fin de ligne.
String eol = System.getProperty("line.separator");
//lecture du fichier texte
try{
// Ouverture d'un flux d'entree depuis le fichier "file"
InputStream ips=new FileInputStream(file);
// Mise en place d'un lecteur (reader) sur le flux d'entree
InputStreamReader ipsr=new InputStreamReader(ips);
// Encapsulation du lecteur primaire dans un lecteur à buffer (optimisation de la lecture).
BufferedReader br=new BufferedReader(ipsr);
// Lecture du fichier ligne par ligne.
String ligne;
while ((ligne=br.readLine())!=null){
str += ligne+eol;
}
// Fermeture des object dédiés à la lecture du fichier et de l'accès au fichier.
br.close();
} catch (Exception e){
System.err.println("Impossible d'ecrire dans le fichier "+file.getPath()+": "+e.getMessage());
e.printStackTrace(System.err);
}
return str;
}
/**
* Le point d'entrée du programme (méthode exécutable.)
* @param args les arguments du programme.
*/
public static void main(String[] args){
String eol = System.getProperty("line.separator");
String path = "fichierterst.txt";
String str = "Chaine de test"+eol
+ "Ligne 1: la ligne 1"+eol
+ "Ligne 2: la ligne 2"+eol
+ "Ligne 3: la ligne 3";
System.out.println("Test d'ecriture dans un fichier texte:");
System.out.println("Chaine a ecrire: ");
Copyright © La page de Julien Seinturier Page 4/5
I3 Java - TP 5
System.out.println(str);
System.out.println();
FileIO writer = new FileIO();
// Cree un lien vers un fichier
File file = new File(path);
// Ecris la chaine de caractères dans le fichier "file"
writer.write(file, str);
// Lis le contenu du fichier "file" et affiche son contenu
System.out.println("Test de lecture depuis un fichier texte");
String str2 = writer.read(file);
System.out.println("Chaine lue:");
System.out.println(str2);
}
}
vous permettra de lire et d'écrire une chaine de caractère depuis un fichier.
Intégrez ce code dans votre projet Java et exécutez le afin de vérifier son fonctionnement.
Copyright © La page de Julien Seinturier Page 5/5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !