Qu`est-ce qu`un flux

publicité
Qu est-ce qu un flux ? (1)
•  Objectifs :
Réception et envoie de données (séquentielles)
API Java sur
les flux
Master Informatique 1ère année
Objet Flux
Source
(données)
Julien Velcin
http://mediamining.univ-lyon2.fr/velcin
Destination
Entrée
Sortie
•  Données : binaires ou caractères
0,0,1,0,0,0,1,1,0,1…
Qu est-ce qu un flux ? (2)
Destination
Entrée
Sortie
•  Description :
0,0,1,0,0,0,1,1,0,1…
A,b,?, ,\n,B,o,n,j,o…
binaire
caractères
Entrée
Sortie
InputStream
OutputStream
Reader
Writer
Note : Préfixez File pour la gestion des fichiers.
Fichiers de caractères
FileReader & FileWriter
•  Instanciation :
Objet Flux
Source
(données)
A,b,?, ,\n,B,o,n,j,o…
FileReader r = new FileReader("test.txt");
FileWriter w = new FileWriter("test.txt",true);
•  Lecture/écriture :
ou une adresse absolue
(ex. sous windows : "c:\\rep\test.txt")
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();
Flux : le tampon
•  Objectif : Faciliter l
Fichier binaire objet (1)
accès au flux, briser la « séquentialité ».
ObjectOutputStream
FileOutputStream
Flux
Caractères
tampon
Flux
Fichier
Objet
Fichier
tampon
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();
Fichier binaire objet (2)
•  Lecture d objet :
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”);
}
ObjectInputStream
FileInputStream
Fichier binaire objet (3)
Ecriture d objet :
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)
Fichier binaire objet (5)
Exemple
Exemple (suite)
public class Alcool {
public double degre;
public String nom;
public class Bar {
public TreeSet les_liquides;
public Coktail en_melangeant(JusDeFruit jus) { … }
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”);
}
}
public class Bar {
public TreeSet les_liquides;
public void enregistrer() { … }
}
public static void main( … ) {
…
Bar b = new Bar();
…
b.enregistrer();
}
Fichier binaire objet (6)
•  Très important :
}
Exemple (suite)
import
import
import
public
•  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();
}
Implémentation optionnelle !
Pour être écrit dans un fichier, un objet (et les objets qu il utilise)
doit implémenter l interface serializable.
}
java.io.Serializable;
java.io.FileOutputStream;
java.io.ObjectOutputStream;
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();
}
Exemple (suite)
public class Alcool implements Serializable {
public double degre;
public String nom;
Implémentation
optionnelle !
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();
}
Téléchargement