La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

S. Domas Système dExploitation Entrées/Sorties en Java 1ère annéeIUT Belfort-Montbéliard.

Présentations similaires


Présentation au sujet: "S. Domas Système dExploitation Entrées/Sorties en Java 1ère annéeIUT Belfort-Montbéliard."— Transcription de la présentation:

1 S. Domas Système dExploitation Entrées/Sorties en Java 1ère annéeIUT Belfort-Montbéliard

2 2 Les flux (1) S. Domas Un flux est une représentation abstraite dune suite doctets à destination ou en provenance dune ressource (fichier, périphérique, mémoire,…). On parle de flux de lecture et flux décriture. En Java, cela correspond aux classes InputStream et OutputStream. Pour des raisons defficacité, on nutilise pratiquement jamais ces deux classes directement pour lire/écrire. On prend des classes adaptées au type de ressource et au type de données à lire/écrire.

3 3 Les flux (2) S. Domas Sans tenir compte de la hiérarchie de classes, il faut se poser les questions : Quelle ressource est employée ? un pipe, un fichier ordinaire, la mémoire (=un tableau, une chaîne, …), un périphérique (clavier, socket, …).

4 4 Les flux (3) S. Domas Quelles données sont lues/écrites ? des octets, des caractères, des types primitifs (int, double, …), des objets. Comment les données sont lues ? de manière « brute », au travers dun tampon, au travers dun filtre utilisateur.

5 5 Les ressources (1) S. Domas Pour gérer laccès aux pipes, aux fichiers ordinaires, à la mémoire, on utilise généralement des classes spécialisées (par exemple : PipedInputStream, FileWriter, CharArrayReader, …) qui utilisent de manière transparente le flux de lecteur/écriture qui leur est associé. Pour les autres cas, il faut récupérer un flux de lecture/écriture grâce aux méthodes fournies par la classe représentant la ressource. Par exemple : Socket sock = new Socket( …); // crée une socket OutputStream os = sock.getOutputStream(); // récupère le flux décriture de la socket.

6 6 Les ressources (2) S. Domas Pour certains cas, lAPI Java fourni directement un flux, sans avoir besoin de créer un objet représentant la ressource. Par exemple, le flux de lecture associé au clavier est accessible grâce à lattribut System.in. Remarque : System.out nest pas un OutputStream mais un PrintWriter. (voir transp. 12)

7 7 Les types de données (1) S. Domas Pour lire/écrire simplement des octets, on utilise des classes différentes selon la ressource. Par exemple : FileInputStream, FileOutputStream : pour les fichiers PipedInputStream, PipedOutputStream : pour les pipe InputStream, OutputStream : pour les socket, le clavier, …

8 8 Les types de données (2) S. Domas Pour lire/écrire autre chose que des octets, on « encapsule » un flux doctets dans une classe de conversion, adaptée au type de données : DataInputStream, DataOutputStream : pour des données primaires (int, double, …) ObjectInputStream, ObjectOutputStream : pour des objets InputStreamReader, OutputStreamWriter : pour des caractères. Cette encapsulation se fait en passant lobjet flux au constructeur de la classe de conversion.

9 9 Les types de données (3) S. Domas Exemples : // convertit le flux doctets en flux de données primaires DataInputStream dis = new DataInputStream(System.in); dis.readInt() // lit un entier à partir du clavier. File fich = new File( " toto " ); FileOutputStream fis = new FileOutputStream(fich); // crée le flux de sortie sur le fichier // convertit le flux doctets en flux de caractères. OutputStreamWriter osw = new OutputStreamWriter(fis); osw.write( " bonjour ", 0, 5) // écrit bonjo dans toto

10 10 Les types de données (4) S. Domas Exemples : A a = new A(…); Socket sock = new Socket( …); OutputStream sis = sock.getOutputStream(); // récupère le flux de sortie de la socket // convertit le flux doctets en flux dobjet ObjectOutputStream ois = new ObjectOutputStream(sis); ois.writeObject(a); // envoi lobjet a

11 11 Les conversions/filtres (1) S. Domas Le fait de lire/écrire des caractères, des données primaires ou des objets constitue déjà un filtrage du type conversion. Pour améliorer les performances de lecture/écriture, ou pour faire des traitements particuliers sur les données, on peut utiliser des classes prédéfinies de filtrage. Le filtrage le plus courant est dutiliser un tampon qui évite daccéder trop souvent à la source : BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream.

12 12 Les conversions/filtres (2) S. Domas Le programmeur peut également écrire ses propres filtres en héritant des classes FilterXXX. Par exemple, on peut créer une classe qui hérite de FilterReader et qui permet de lire directement une ligne de mots séparés par des virgules. PrintStream et PrintWriter sont des classes additionnelles qui permettent dutiliser une méthode Print sur un flux de sortie. Par exemple : System.out.println("bonjour " + name + ". Ca va ? " );


Télécharger ppt "S. Domas Système dExploitation Entrées/Sorties en Java 1ère annéeIUT Belfort-Montbéliard."

Présentations similaires


Annonces Google