Java : Les FLUX de données



Documents pareils
Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Flux de données Lecture/Ecriture Fichiers

Cours 14 Les fichiers

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Le modèle client-serveur

M1 MIAGE - Réseau TP1

Programmation Internet en Java

Développement Logiciel

Gestion distribuée (par sockets) de banque en Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Initiation à la programmation orientée-objet avec le langage Java

Chapitre VI- La validation de la composition.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Plan du cours. Historique du langage Nouveautés de Java 7

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

PROGRAMMATION PAR OBJETS

Auto-évaluation Programmation en Java

Dis papa, c est quoi un bus logiciel réparti?

Programmation client-serveur sockets - RPC

Le Modèle de Sécurité dans JAVA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Environnements de développement (intégrés)

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Remote Method Invocation (RMI)

Une introduction à Java

Certificat Big Data - Master MAthématiques

Cours de Système : Gestion de Fichiers

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Langage Java. Classe de première SI

Chapitre 10. Les interfaces Comparable et Comparator 1

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle CISII,

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

INITIATION AU LANGAGE JAVA

Programmation en Java IUT GEII (MC-II1) 1

Travaux Pratiques : Lucène - Gestion d un index plein texte

Cours 1: Java et les objets

La technologie Java Card TM

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP1 : Initiation à Java et Eclipse

Projet de programmation (IK3) : TP n 1 Correction

TP : Gestion d une image au format PGM

Java c est quoi? Java pourquoi?

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation Objet Java Correction

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmer en JAVA. par Tama

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

RMI le langage Java XII-1 JMF

Introduction aux composants logiciels : JavaBeans Master des Technologies de l'internet

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation Orientée Objet Java

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

2 Chapitre 1 Introduction

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Introduction à HTTP. Chapitre HTTP 0.9

Java et les bases de données

Synchro et Threads Java TM

Programmation système I Les entrées/sorties

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

La norme Midi et JavaSound

Chapitre 2. Classes et objets

Calcul Parallèle. Cours 5 - JAVA RMI

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

as Architecture des Systèmes d Information

INF 321 : mémento de la syntaxe de Java

Alfstore workflow framework Spécification technique

ACTIVITÉ DE PROGRAMMATION

GESTION DES FICHIERS C/UNIX

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

JavaServer Pages (JSP)

Logiciel de Base. I. Représentation des nombres

Web Tier : déploiement de servlets

Remote Method Invocation Les classes implémentant Serializable

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java Licence Professionnelle CISII,

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Premiers Pas en Programmation Objet : les Classes et les Objets

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Transcription:

1 Java : Les FLUX de données Les flux de données introduction les flux binaires les flux binaires de sortie (FBS) les flux binaires d entrée (FBE) les flux textes (FTS & FTE) les flux textes de sortie (FTS) les flux textes d entrée (FTE) hiérarchie du package "java.io" (2) (4) (7) (10) (11) (12) (13)

2 Java : Flux / Introduction Définition : Un flux est un canal permettant de faire transiter de l information sous forme d une suite d octets. La notion de flux est très générale puisqu elle désigne simplement un canal pouvant être connecté à différentes sources (entrées) ou cibles (sorties), soit : à des fichiers à des périphériques de communication à des emplacement mémoire à des sites distants D autre part, les flux sont particularisés selon le sens : d ENTRÉE Flux en lecture (délivrant de l information) FLUX de SORTIE Flux en écriture (recevant de l information) selon le mode : FLUX BINAIRE TEXTE L information transite sans aucune modification L information qui transite subit une transformation (formatage) sous forme de suite de caractères

3 Java : Flux / Introduction Différence entre flux BINAIRE et flux TEXTE Soit la déclaration : int i = 129 ; Avec un flux BINAIRE : f.writeint (i) ; envoie dans le flux les octets successifs correspondant au codage en mémoire de l entier i, soit : 0x00 / 0x00 / 0x00 / 0x81 Avec un flux TEXTE : f.println (i) ; envoie dans le flux les octets successifs correspondant aux caractères de l entier i, soit : "1" / "2" / "9" Rq : les méthodes d écriture dans les flux diffèrent car elles sont héritées de \nclasses différentes. Hiérarchie Java pour les flux le package "java.io" En Java, il existe quelques 50 classes, 10 interfaces et 16 Exceptions intervenant dans la manipulation des flux! Sans les étudier toutes, il faut avoir une connaissance des différents types de flux et de leurs compositions. En effet, certaines classes de flux n ont d autres utilité que d encapsuler d autres flux pour fournir des fonctionnalités supplémentaires. Ex: Un flux d entrée standard peut être encapsulé dans un flux gérant un tampon (buffer). Ainsi, tant que le tampon n est pas plein, les écritures dans le flux global s effectueront instantanément (grâce à un thread qui s occupe d écrire en tâche de fond).

4 Hiérarchie de classes (FBS) Flux de sortie OutputStream class java.io.outputstream // abstract class class java.io.bytearrayoutputstream // écriture dans un tableau en mémoire class java.lang.object Java : Les flux binaires de sortie (FBS) class java.io.fileoutputstream // écriture dans un fichier class java.io.filteroutputstream // abstract class class java.io.bufferedoutputstream // filtre ajoutant un tampon d écriture class java.io.dataoutputstream (implements java.io.dataoutput) // filtre ajoutant l écriture de types primitifs à l aide de writexxx( ) class java.io.printstream // filtre combinant plusieurs fonctionnalités!!! dont print( ) et println( ) class java.io.objectoutputstream (implements java.io.objectoutput, java.io.objectstreamconstants) // sérialisation d objets, persistance d objet en fichier class java.io.pipedoutputstream // OutputStream connecté à un InputStream Les FBS permettent d écrire des suites d octets, de valeurs de type primitif ou d objets dans des fichiers, en mémoire ou au travers de sockets. octets valeurs de type primitif objets FBS en fichier en mémoire au travers d une socket vers un périphérique de communication

5 Java : Les flux binaires de sortie (FBS) Principales fonctionnalités de FBS pour l écriture en fichier abstract OutputStream Classe de base pour les FBS méthodes IOException void write (int b), void write (byte[] b),... void close (), void flush () FileOutputStream FileNotFoundException SecurityException abstract FilterOutputStream FBS associé à un fichier (nouveau, détruit ou ajout) constructeurs FileOutputStream (File file),... FileOutputStream (String filename),... Classe de base pour les filtres (encapsulation de FBS) DataOutputStream Filtre permettant l écriture de types primitifs (encapsulation de FBS) constructeurs DataOutputStream (OutputStream out) IOException BufferedOutputStream méthodes void writexxx (Xxx b) où Xxx = Boolean, Byte,... Void writeutf (String str) codage unicode... Filtre permettant l utilisation d un tampon (encapsulation de FBS) constructeurs BufferedOutputStream (OutputStream out),...

6 Java : Les flux binaires de sortie (FBS) Exemples de FBS pour l écriture en fichier 1) // FBS simple FileOutputStream fbs1 = new FileOutputStream("myData.dat"); 2) // FBS pour types primitifs DataOutputStream fbs2 = new DataOutputStream (new FileOutputStream("myData.dat")); 3) // FBS pour types primitifs avec tampon (*) DataOutputStream fbs3 = new DataOutputStream (new BufferedOutputStream (new FileOutputStream("myData.dat"))); (*)généralement inutile car le système d exploitation utilise son propre tampon Rq: le BufferOutputStream est lui-même encapsulé dans le DataOutputStream car on désire au final un flux doté des méthodes d écriture pour des types primitifs. 4) // FBS simple à partir d un objet File File f = new File("c:\ApplicationData", "mydata.dat"); if (!f.exists() ) { // Rq: l objet File permet de tester le fichier avant de définir le flux FileOutputStream fbs4 = new FileOutputStream(f);... } Rq: Les exceptions FileNotFoundException ou SecurityException peuvent survenir dans chaque exemple.

7 class java.lang.object Java : Les flux binaires d entrée (FBE) Hiérarchie de classes (FBE) Flux d entrée InputStream class java.io.inputstream // abstract class class java.io.bytearrayinputstream // lecture depuis un tableau en mémoire class java.io.fileinputstream // lecture depuis un fichier class java.io.filterinputstream // abstract class class java.io.bufferedinputstream // filtre ajoutant un tampon de lecture class java.io.datainputstream (implements java.io.datainput) // filtre ajoutant la lecture de types primitifs à l aide de xxx readxxx() class java.io.linenumberinputstream // filtre gérant le numéro de la ligne courante class java.io.pushbackinputstream // filtre ajoutant la capacité de lecture arrière class java.io.objectinputstream (implements java.io.objectinput, java.io.objectstreamconstants) // désérialisation d objets class java.io.pipedinputstream // InputStream connecté à un OutputStream class java.io.sequenceinputstream // concaténation de plusieurs InputStream class java.io.stringbufferinputstream // conversion de flux de byte en flux de caractères Les FBE permettent de lire des suites d octets, de valeurs de type primitif ou d objets dans des fichiers, en mémoire, au travers de sockets ou depuis un périphérique de communication. depuis un fichier depuis la mémoire au travers d une socket depuis un périphérique de communication FBE octets valeurs de type primitif objets

8 Java : Les flux binaires d entrée (FBE) Principales fonctionnalités de FBE pour la lecture de fichier abstract InputStream Classe de base pour les FBE méthodes IOException int read (int b), int read (byte[] b), void close () long skip (long n), int available(), void reset(),... FileInputStream FileNotFoundException SecurityException FBE associé à un fichier (existant) constructeurs FileInputStream (File file),... FileInputStream (String filename),... abstract FilterInputStream Classe de base pour les filtres (encapsulation de FBE) DataInputStream IOException EOFException BufferedInputStream Filtre permettant la lecture de types primitifs (encapsulation de FBE) constructeurs DataInputStream (InputStream in) méthodes xxx readxxx () où Xxx = Boolean, Byte,... final String readutf () codage unicode void readfully (byte[] b),... Filtre permettant l utilisation d un tampon (encapsulation de FBE) constructeurs BufferedInputStream (InputStream in),...

9 Java : Les flux binaires d entrée (FBE) Exemples de FBE pour la lecture de fichier 1) // FBE simple FileInputStream fbe1 = new FileInputStream("myData.dat"); 2) // FBE pour types primitifs DataInputStream fbe2 = new DataInputStream (new FileInputStream("myData.dat")); 3) // FBE pour types primitifs avec tampon DataInputStream fbe3 = new DataInputStream (new BufferedInputStream (new FileInputStream("myData.dat"))); Rq: le BufferInputStream est lui-même encapsulé dans le DataInputStream car on désire au final un flux doté des méthodes de lecture pour des types primitifs. 4) // FBE simple à partir d un objet File File f = new File("c:\ApplicationData", "mydata.dat"); if ( f.exists() ) { // Rq: l objet File permet de tester le fichier avant de définir le flux FileInputStream fbe4 = new FileInputStream(f);... } Rq: Les exceptions FileNotFoundException ou SecurityException peuvent survenir dans chaque exemple.

10 class java.lang.object Hiérarchie de classes (FTS) Flux de caractères Writer class java.io.writer // abstract class class java.io.bufferedwriter // filtre pour ajouter un tampon d écriture class java.io.chararraywriter // écriture dans un tableau en mémoire class java.io.filterwriter // abstract class (aucune sous classe dans l API Java) class java.io.outputstreamwriter // conversion de flux de caractères en flux de bytes class java.io.filewriter // écriture dans un fichier à l aide write( ) class java.io.pipedwriter // OutputStream connecté à un InputStream class java.io.printwriter // filtre ajoutant l écriture de types primitifs à l aide de write( ), print( ) et println( ) class java.io.stringwriter // écriture dans un string buffer prêt à être converti en String Hiérarchie de classes (FTE) Flux de caractères Reader class java.lang.object Java : Les flux textes (FTS & FTE) class java.io.reader // abstract class class java.io.bufferedreader class java.io.linenumberreader class java.io.chararrayreader class java.io.filterreader class java.io.pushbackreader class java.io.inputstreamreader class java.io.filereader class java.io.pipedreader class java.io.stringreader // filtre pour ajouter un tampon de lecture à l aide de int read() et String readline() // filtre gérant le numéro de la ligne courante // lecture depuis un tableau en mémoire // abstract class // filtre ajoutant la capacité de lecture arrière // conversion de flux de bytes en flux de caractères // lecture depuis un fichier à l aide de int read() // InputStream connecté à un OutputStream // flux de lecture depuis un String

11 Java : Les flux textes de sortie (FTS) Exemples de FTS pour l écriture en fichier --- Flux FTS --- 1) // FTS simple permettant d utiliser write( ) FileWriter fts1 = new FileWriter ("mydata.dat"); 2) // FTS permettant d utiliser print( ) et println( ) PrintWriter fts2 = new PrintWriter (new FileWriter ("mydata.dat")); 3) // FTS permettant d utiliser print( ) et println( ) et avec un tampon PrintWriter fts3 = new PrintWriter (new BufferedWriter (new FileWriter ("mydata.dat"))); Rq: le BufferWriter est lui-même encapsulé dans le PrintWriter car on désire au final un flux doté des méthodes d écriture print( ) et println( ). Rq: L exception IOException peut survenir dans chaque exemple.

12 Java : Les flux textes d entrée (FTE) Exemples de FTE pour la lecture de fichier --- Flux FTE --- 1) // FTE simple permettant d utiliser int read() FileReader fte1 = new FileReader ("mydata.dat"); 2) // FTE permettant d utiliser String readline() LineNumberReader fte2 = new LineNumberReader (new FileReader ("mydata.dat")); 3) // FTE permettant d utiliser String readline() et avec un tampon BufferedReader fte3 = new BufferedReader (new FileReader ("mydata.dat")); Rq: les classes BufferReader et LineNumberReader définissent la méthode de lecture String readline(). D où le fait que, dans l exemple n 3, il n a pas été utilisé de LineNumberReader. Rq: Dans chaque exemple : - l exception IOException peut survenir, - la méthode boolean ready() est disponible.

13 Java : Hiérarchie du package "java.io" Hiérarchie de classes (1) class java.lang.object File & FileDescriptor class java.io.file (implements java.lang.comparable, java.io.serializable) class java.io.filedescriptor Flux d entrée InputStream class java.io.inputstream class java.io.bytearrayinputstream class java.io.fileinputstream class java.io.filterinputstream class java.io.bufferedinputstream class java.io.datainputstream (implements java.io.datainput) class java.io.linenumberinputstream class java.io.pushbackinputstream class java.io.objectinputstream (implements java.io.objectinput, java.io.objectstreamconstants) class java.io.pipedinputstream class java.io.sequenceinputstream class java.io.stringbufferinputstream Flux de sortie OutputStream class java.io.outputstream class java.io.bytearrayoutputstream class java.io.fileoutputstream class java.io.filteroutputstream class java.io.bufferedoutputstream class java.io.dataoutputstream (implements java.io.dataoutput) class java.io.printstream class java.io.objectoutputstream (implements java.io.objectoutput, java.io.objectstreamconstants) class java.io.pipedoutputstream

14 Java : Hiérarchie du package "java.io" Hiérarchie de classes (2) class java.lang.object Flux de caractères Reader class java.io.reader class java.io.bufferedreader class java.io.linenumberreader class java.io.chararrayreader class java.io.filterreader class java.io.pushbackreader class java.io.inputstreamreader class java.io.filereader class java.io.pipedreader class java.io.stringreader Flux de caractères Writer class java.io.writer class java.io.bufferedwriter class java.io.chararraywriter class java.io.filterwriter class java.io.outputstreamwriter class java.io.filewriter class java.io.pipedwriter class java.io.printwriter class java.io.stringwriter Flux d analyse grammaticale StreamTokenizer class java.io.streamtokenizer

15 Java : Hiérarchie du package "java.io" Hiérarchie de classes (3) class java.lang.object Flux de fichier à accès direct class java.io.randomaccessfile (implements java.io.datainput, java.io.dataoutput) Flux pour objets (class java.io.inputstream) class java.io.objectinputstream (implements java.io.objectinput, java.io.objectstreamconstants) class java.io.objectinputstream.getfield (class java.io.outputstream) class java.io.objectoutputstream (implements java.io.objectoutput, java.io.objectstreamconstants) class java.io.objectoutputstream.putfield class java.io.objectstreamclass (implements java.io.serializable) class java.io.objectstreamfield (implements java.lang.comparable) Securité & Permission class java.security.permission (implements java.security.guard, java.io.serializable) class java.security.basicpermission (implements java.io.serializable) class java.io.serializablepermission class java.io.filepermission (implements java.io.serializable) A noter que de nombreuses classes sont définies pour être composées avec d autres ; elles agissent comme des filtres sur les flux encapsulés. Souvent ces classes sont dérivées d une classe dont le nom comporte le préfixe Filter ou Buffered (ex: FilterOutputStream ou BufferedWriter). D une manière générale, pour voir comment composer plusieurs classes, et donc en utiliser certaines comme filtres, ce n est pas tant leur diagramme d héritage qui compte que les arguments de leurs constructeurs (ex: le constructeur BufferedReader(Reader in) suggère l encapsulation d un Reader, i.e. un flux quelconque d entrée de caractères).