Quatrime partie
Pr Hafidi Imad
1 Hafidi Imad -ENSA de Khouribga-Cours JAVA
imad.hafidi@gmail.com
Entres/sorties
10
Certains types de flux agissent sur la faon dont sont traites les donnes qui transitent par leur intermdiaire :
E / S bufferises, traduction de donnes,
Il va donc sagir de combiner ces diffrents types de flux pour raliser la gestion souhaite pour les E / S.
11
12
Lecture de fichier
import java.io.*; public class LireLigne A partir du chemin d'un dossier ou d'un { fichier, on peut crer un objet FileReader public static void main(String[] args) puis partir ce celui-ci, { on cre un BufferedReader try { FileReader fr=new FileReader("c:\\windows\\system.ini"); BufferedReader br= new BufferedReader(fr); while (br.ready()) System.out.println(br.readLine()); br.close(); Dans l'objet BufferedReader } on dispose d'une mthode catch (Exception e) readLine() {System.out.println("Erreur "+e);} } }
13 Hafidi Imad -ENSA de KhouribgaCours JAVA
15
16
Classe DataOutputStream
sous classes de OutputStream permet d'crire tous les types de base de Java.
17
18
20
long skip (long n) qui permet dignorer un certain nombre doctets en provenance du flot. Cette fonction renvoie le nombre d'octets effectivement ignors.
21
22
23
Concrtement, il s'agit de passer, dans le constructeur d'un flux, un autre flux dj existant pour combiner leurs caractristiques.
24
DataInputStream
permet de combiner les octets pour fournir des mthodes de lecture de plus haut niveau (pour lire un double par exemple), mais ne sait pas lire depuis un fichier.
26
Classe FileOutputStream
FileOutputStream (String name) FileOutputStream (String name, boolean append) FileOutputStream (File f)
27
Classe BufferedOutputStream
BufferedOutputStream (OutputStream out) BufferedOutputStream (OutputStream out, int n)
28
29
Ces fichiers possdent un pointeur de fichier qui indique constamment la donne suivante.
La position de ce pointeur est donne par long getFilePointer () et celui-ci peut tre dplac une position donne grce seek (long off).
30
Pour lire des chanes de caractres sous forme texte, il faut utiliser, par exemple,
BufferedReader qui possde une mthode readLine() .
Pour la lecture de nombres sous forme de texte, il n'existe pas de solution toute faite : il faut par exemple passer par des chanes de caractres et les convertir en nombres.
32
33
La srialisation
La srialisation consiste prendre un objet en mmoire et en sauvegarder l'tat sur un flux de donnes (vers un fichier, par exemple). Ce concept permet aussi de reconstruire, ultrieurement, l'objet en mmoire l'identique de ce qu'il pouvait tre initialement. La srialisation peut donc tre considre comme une forme de persistance des donnes. 2 classes ObjectInputStream et ObjectOutputStream proposent, respectivement, les mthodes readObjet et writeObject Par dfaut, les classes ne permettent pas de sauvegarder l'tat d'un objet sur un flux de donnes. Il faut implmenter l'interface java.io.Serializable. Hafidi Imad -ENSA de Khouribga36 Cours JAVA
void sauvegarde(String s) { try {FileOutputStream f = new FileOutputStream(new File(s)); ObjectOutputStream oos = new ObjectOutputStream(f); oos.writeObject(this); oos.close();} catch (Exception e) { System.out.println("Erreur "+e);} } static Object relecture(String s) { try {FileInputStream f = new FileInputStream(new File(s)); ObjectInputStream oos = new ObjectInputStream(f); Object o=oos.readObject(); oos.close();} catch (Exception e) { System.out.println("Erreur "+e);} }37 Hafidi Imad -ENSA de KhouribgaCours JAVA
Exemple de srialisation