POO/COO java.io
Entr´
ees-sorties : java.io.*
bas´
ees sur la notion de stream
= canal de communication avec un ´
ecrivain `
a une extr´
emit´
eetunlecteur `
a l’autre.
Classes de streams de base :
InputStream/OutputStream classes abstraites d´
efinissant les op´
erations de base
pour la lecture/´
ecriture de s´
equence d’octets
Reader/Writer classe abstraites d´
efinissant les op´
erations de base pour la
lecture/´
ecriture de s´
equence de donn´
ees de type cacact`
ere et supportant
l’Unicode.
m´
ethodes principales : read(...) et write(...),close()
java.io.IOException
USTL http://www.lifl.fr/˜routier/enseignement 1
POO/COO java.io
Les autres principaux streams
InputStreamReader/OutputStreamWriter classes pour transformer des caract`
eres
en octets et vice-versa.
DataInputStream/DataOutputStream streams sp´
ecialis´
es qui ajoutent la
possibilit´
e de lire/´
ecrire des donn´
ees de types de base.
ObjectInputStream/ObjectOutputStream streams sp´
ecialis´
es dans la
lecture/´
ecriture d’objets Java s´
erialis´
es. Ici lecture implique reconstruction
d’objet.
BufferedInputStream/BufferedOutputStream/BufferedReader/BufferedWriter
ajoutent un syst`
eme de tampon (buffer) pour am´
eliorer les performances.
PipedInputStream/PipedOutputStream/PipedReader/PipedWriter Streams
fonctionnant par paires, utilis´
es notamment pour la communication entre
threads.
FileInputStream/FileOutputStream/FileReader/FileWriter Streams
permettant de lire/´
ecrire dans un fichier.
utiliser les variantes Reader/Writer pour des donn´
ees caract`
eres
USTL http://www.lifl.fr/˜routier/enseignement 2
POO/COO java.io
“Combinaison” de streams
Syst`
emes d’“enveloppes” successives, mises en cascade
bufferisation envelopper le stream `
a “bufferiser” dans un Buffered***Stream :
InputStream bufferedIn = new BufferedInputStream(unInputStream);
streams de donn´
ees pour acc´
eder facilement aux donn´
ees de types primitifs :
DataInputStream dis = new DataInputStream( System.in );
doudle d = dis.readDouble();
transformations en chaˆ
ıne de caract`
eres PrintWriter
m´
ethodes print(),println()
USTL http://www.lifl.fr/˜routier/enseignement 3
POO/COO java.io
import java.io.*;
public class UtilInput
...public static String readString() throws java.io.IOException
Reader isReader = new InputStreamReader(System.in);
BufferedReader bReader = new BufferedReader(isReader);
return bReader.readLine();
ou
return (new BufferedReader(new InputStreamReader(System.in))).readLine();
USTL http://www.lifl.fr/˜routier/enseignement 4
POO/COO java.io
Fichiers
le classe File : informations sur fichiers + manipulations
acc`
es s´
equentiel : RandomAccessFile (seek())
Streams de fichiers
FileInputStream in = new FileInputStream("/tmp/exemple");
DataInputStream dataIn = new DataInputStream(in);
BufferedInputStream bufDataIn = new BufferedInputStream(dataIn);
FileOutputStream out = new FileOutputStream(unObjetFile);
FileWriter fwOut = new FileWriter(out);
USTL http://www.lifl.fr/˜routier/enseignement 5
POO/COO java.io
import java.io.*;
...
public void copieFichierTexte(String nomSource, String nomCible)
File source = new File(nomSource);
File cible = new File(nomCible);
tryBufferedReader in = new BufferedReader(new FileReader(source));
PrintWriter out = new PrintWriter(new FileWriter(cible));
String ligne;
while ((ligne = in.readLine()) != null)
out.println(ligne);
out.close();
in.close();
catch(IOException e) e.printStackTrace();
USTL http://www.lifl.fr/˜routier/enseignement 6