API Java sur
les flux
Master Informatique 1ère année
Julien Velcin
http://mediamining.univ-lyon2.fr/velcin
Quest-ce quun flux ? (1)
Objectifs :
Réception et envoie de données (séquentielles)
Données : binaires ou caractères
Source
(données) Destination
Objet Flux
Entrée Sortie
0,0,1,0,0,0,1,1,0,1 A,b,?, ,\n,B,o,n,j,o
Quest-ce quun flux ? (2)
Description :
Note : Préfixez File pour la gestion des fichiers.
Source
(données) Destination
Objet Flux
Entrée Sortie
Entrée Sortie
binaire InputStream OutputStream
caractères Reader Writer
0,0,1,0,0,0,1,1,0,1
A,b,?, ,\n,B,o,n,j,o
Fichiers de caractères
FileReader & FileWriter
Instanciation :
FileReader r = new FileReader("test.txt");
FileWriter w = new FileWriter("test.txt",true);
Lecture/écriture :
int c = r.read();
r.read(char[] s);
r.read(char[] s, int debut, int longueur);
w.write(int c);
w.write(char[] s, int debut, int longueur);
w.write(String s, int début, int longueur);
Fermeture :
r.close();
w.close();
ou une adresse absolue
(ex. sous windows : "c:\\rep\test.txt")
Objectif : Faciliter laccès au flux, briser la « séquentialité ».
Note : préfixez Buffered pour obtenir un tampon.
BufferedReader br = new BufferedReader(r);
BufferedWriter bw = new BufferedWriter(w);
String s = br.readLine();
bw.newLine();
bw.flush();
bw.close();
Flux : le tampon
Caractères Fichier
Flux
tampon
Fichier binaire objet (1)
Objet Fichier
Flux
tampon
ObjectOutputStream FileOutputStream
ObjectInputStream FileInputStream
Fichier binaire objet (2)
Lecture dobjet :
try {
FileInputStream r = new FileInputStream("test.dat");
ObjectInputStream o = new ObjectInputStream(r);
Object lu = o.readObject();
mon_objet = (MaClasse)lu;
o.close();
r.close();
}
catch (Exception e)
{
System.out.println(“Erreur d’entrée-sortie”);
}
Fichier binaire objet (3)
Ecriture dobjet :
Object ecrit = new Object();
(…)
try {
FileOutputStream w = new FileOutputStream("test.dat");
ObjectOutputStream o = new ObjectOutputStream(w);
o.writeObject(ecrit);
o.close();
w.close();
}
catch (Exception e)
{
System.out.println(“Erreur d’entrée-sortie”);
}
Fichier binaire objet (4)
Exemple
public class Alcool {
public double degre;
public String nom;
public Coktail en_melangeant(JusDeFruit jus) { … }
}
public class Bar {
public TreeSet les_liquides;
public void enregistrer() { … }
}
public static void main( … ) {
Bar b = new Bar();
b.enregistrer();
}
Fichier binaire objet (5)
Exemple (suite)
public class Bar {
public TreeSet les_liquides;
public void enregistrer() {
try {
FileOutputStream w =
new FileOutputStream("test.dat");
ObjectOutputStream o =
new ObjectOutputStream(w);
o.writeObject(les_liquides);
o.close();
w.close();
} catch (Exception e)
{ System.out.println(“Erreur d’IO”);
}
}
Fichier binaire objet (6)
Très important :
Pour être écrit dans un fichier, un objet (et les objets quil utilise)
doit implémenter linterface serializable.
Signature des méthodes :
private void writeObject(java.io.ObjectOutputStream
out)
throws IOException {
out.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream
in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
}
Exemple (suite)
import java.io.Serializable;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class Bar implements Serializable {
public TreeSet les_liquides;
public void enregistrer() {
FileOutputStream w = new FileOutputStream("test.dat");
ObjectOutputStream o = new ObjectOutputStream(w);
o.writeObject(les_liquides);
o.close();
w.close();
}
private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
out.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
}
}
Implémentation optionnelle !
Exemple (suite)
public class Alcool implements Serializable {
public double degre;
public String nom;
public Coktail en_melangeant(JusDeFruit jus) { … }
private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
out.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
}
}
Implémentation
optionnelle !
1 / 4 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 !