Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »

Slides:



Advertisements
Présentations similaires
Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une.
Advertisements

IChannelIPrivilegedIMultithreadedIServantICacheableIMimeResponse Type custom : les interfaces de programmations IChannel : canal standard, stateful 5 méthodes.
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
Sérialisation des objets
Le mécanisme des exceptions
Flots et Sérialisation des objets
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
(Classes prédéfinies – API Java)
Introduction à Java - les « Threads » -
Plan du cours 5:Threads introduction Définition Création des Threads
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Les entrées /sorties en Java François Bonneville
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours d ’Informatique, DEUG 2 MASS/MIASS
1 Cours JAVA / Y.Laborde Java : Les FLUX de données Les flux de données introduction les flux binaires les flux binaires de sortie (FBS) les flux binaires.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Classes abstraites et Interfaces
Système d’Exploitation
Programmation par Objets et Java
1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Multi-Thread Jian-Yun Nie
IFT 6800 Atelier en Technologies d’information
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Cours 7 : Le langage de programmation Java chapitre 5: Les API Java.
Exceptions IFT1025: Programmation 2 Jian-Yun Nie.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Rappels: Java et internet M1 Protocoles réseaux. Sommaire Rappels java Entrées-sorties Thread Rappels tcp-udp Socket tcp et SocketServer Socket udp compléments.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Présentation du cours de Conception et de Programmation Orientée Objet - Java Philippe Canalda Master 1 PSM – Montbéliard – Conception et Programmation.
Présentation du cours de Conception et de Programmation Orientée Objet - Java Philippe Canalda Master 1 PSM – Montbéliard – Conception et Programmation.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Introduction à la programmation (420-PK2-SL) cours 20 Gestion des applications Technologie de l’information (LEA.BW)
J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~
Les API Java. java.lang.* Object Boolean Character Class Math Number Process Runtime String StringBuffer System Thread ThreadGroup Throwable Double Float.
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Mastère MIAGE, 2006 Systèmes Distribués Fabrice Huet
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Entrées / Sorties.
Strings et Tableaux en Java
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
1 Chapitre III (~70 transparents) Compléments. 2 Au sommaire de ce chapitre 1. Les fichiers Les classes utilitaires
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Fichier et Stream d’Entrée-Sortie IFT1025, Programmation 2 Jian-Yun Nie Version court par Douglas Eck; Version
Introduction à la programmation objet avec java
JAVA Les Entrées-sorties
Fichier et Stream d’Entrée-Sortie IFT1025, Programmation 2 Jian-Yun Nie.
Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture
Java – Les entrées / sorties
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
TP N°5: Partie I Programme Serveur.
Transcription de la présentation:

Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »

Voisin-Polian : Introduction à Java 2 Vue partielle de la hiérarchie relative aux entrées-sorties java.io.File java.io.FileDescriptor java.io.InputStream java.io.ByteArrayInputStream java.io.FileInputStream java.io.FilterInputStream java.io.BufferedInputStream java.io.DataInputStream java.io.LineNumberInputStream java.io.PushbackInputStream java.io.ObjectInputStream java.io.PipedInputStream java.io.SequenceInputStream java.io.StringBufferInputStream java.io.ObjectStreamClass java.io.OutputStream java.io.ByteArrayOutputStream java.io.FileOutputStream java.io.FilterOutputStream java.io.BufferedOutputStream java.io.DataOutputStream java.io.PrintStream java.io.ObjectOutputStream java.io.PipedOutputStream...

Voisin-Polian : Introduction à Java 3 java.io.Reader java.io.BufferedReader java.io.LineNumberReader java.io.CharArrayReader java.io.FilterReader java.io.PushbackReader java.io.InputStreamReader java.io.FileReader java.io.PipedReader java.io.StringReader java.io.Writer java.io.BufferedWriter java.io.CharArrayWriter java.io.FilterWriter java.io.OutputStreamWriter java.io.FileWriter java.io.PipedWriter java.io.PrintWriter java.io.StringWriter java.security.Permission java.io.FilePermission N'apparaît pas ici notamment la hiérarchie liée aux exceptions !

Voisin-Polian : Introduction à Java 4 Hiérarchie des interfaces java.io.DataInput java.io.ObjectInput java.io.DataOutput java.io.ObjectOutput java.io.FileFilter java.io.FilenameFilter java.io.ObjectInputValidation java.io.ObjectStreamConstants java.io.Serializable java.io.Externalizable

Voisin-Polian : Introduction à Java 5 Les flots n Un flot de données est une suite doctets, issus dune source et allant vers un but. n La source et le but peuvent être : u un fichier u une chaîne (en mémoire) u un tableau doctets (en mémoire) u une socket u un processus u une URL u n Le Package java.io contient de nombreuses classes traitant des entrées/sorties

Voisin-Polian : Introduction à Java 6 Les flots n Les flots en java sont structurés en deux hiérarchies distinctes, une pour les flots dentrées et une pour les flots de sorties. Les deux classes de bases (abstraites) en sont InputStream OutputStream n Deux autres « hiérarchies » sont réservées aux entrées et sorties « textuelles » (avec une passerelle possible à partir des flots classiques). Les deux classes de base (abstraites) en sont Reader u Writer

Voisin-Polian : Introduction à Java 7 Classes dextraction et de fonctionnalité n les « classes dextraction » servent à extraire des données dune source n les « classes de fonctionnalité » ajoutent des fonctionnalités n Exemple : la classe FileWriter (dérivée de Writer ) permet dextraire des données et de les « écrire » la classe PrintWriter propose des fonctions évoluées (par exemple println ) On est souvent amener à composer les deux : PrintWriter pr = new PrintWriter(new FileWriter("toto.txt "));

Voisin-Polian : Introduction à Java 8 Les flots doctets en lecture FileInputStreamFilterInputStreamObjectInputStream InputStream BufferedInputStreamDataInputStream StringBuffer InputStream ByteArray InputStream Piped InputStream Sequence InputStream classes dextractionclasses de fonctionnalités

Voisin-Polian : Introduction à Java 9 Les flots doctets en écriture FileOutputStream FilterOutputStreamObjectOutputStream OutputStream BufferedOutputStreamDataOutputStream ByteArray OutputStream Piped OutputStream classes dextraction classes de fonctionnalités PrintStream

Voisin-Polian : Introduction à Java 10 Les flots de caractères en lecture BufferedReaderFilterReaderInputStreamReader Reader LineNumberReader PushbackReader CharArrayReaderStringReader classes dextraction classes de fonctionnalités FileReader PipedReader

Voisin-Polian : Introduction à Java 11 Les flots de caractères en écriture BufferedWriterOutputStreamWriterCharArrayWriter Writer PrintWriterFilterWriter classes dextraction classes de fonctionnalités FileWriter PipedWriterStringWriter

Voisin-Polian : Introduction à Java 12 La classe FILE La classe File permet de modéliser les chemins daccès aux fichiers (et aux répertoires). Cela correspond à une « abstraction » de fichier. n Cette classe permet u de tester lexistence (et le type) dun fichier u de créer (ou de supprimer) un fichier u de renommer un fichier u de lister le contenu dun répertoire u

Voisin-Polian : Introduction à Java 13 La classe File : constructeurs Constructeurs File (String Chemin) File (String CheminPere, String cheminFils) CheminPere désigne un répertoire CheminFils désigne un chemin dans ce répertoire File (File cheminPere, String cheminFils) CheminPere désigne un répertoire (via une « abstraction ») CheminFils désigne un chemin dans ce répertoire

Voisin-Polian : Introduction à Java 14 La classe File : méthodes Les « attributs » du fichier public boolean canRead() public boolean canWrite() public boolean exists() public boolean isDirectory() public boolean isFile() public long lastModified() public long length()

Voisin-Polian : Introduction à Java 15 La classe File : méthodes n Opérations sur les fichiers public boolean createNewFile() // création si le fichier « nommé » (via son abstraction) nexiste pas public boolean delete() public void deleteOnExit() public boolean renameTo(File dest) n Opérations sur les répertoires public boolean mkdir() public boolean mkdirs() n Contenu dun répertoire public String[] list() public File[] listFiles()

Voisin-Polian : Introduction à Java 16 La classe File : méthodes Autres méthodes getName getParent toURL setReadOnly createTempFile compareTo equals toString

Voisin-Polian : Introduction à Java 17 La classe File : exemple public static void main (String[] args) throws IOException { File r, f; int i; String [] dir; r = new File("Exemple"); if (r.isDirectory()) { dir = r.list( ) ; // affichage du contenu de REP for(i=0; i < dir.length; i++) System.out.println(dir[i]); f = new File("Exemple/" + "toto.txt") ; // ou bien : f = new File("Exemple","toto.txt"); if (f.exists()) { System.out.println("toto.txt existe, sa taille est " + f.length()) ; File nf = new File("Exemple/", "titi.txt"); f.renameTo(nf); // renommage de toto.txt } else System.out.println("toto.txt n'existe pas"); dir = r.list(); for(i=0; i < dir.length; i++) System.out.println(dir[i]); }

Voisin-Polian : Introduction à Java 18 La classe (abstraite) InputStream Principales méthodes : abstract int read() // lecture dun octet (doit être redéfinie) int read(byte[] b) int read(byte[] b, int off, int len) lecture dun tableau doctets, retourne le nombre lu, -1 en cas de fin de flot void close() int available() // retourne le nombre doctets pouvant être lus long skip (long n) consomme n octets du flot, retourne le nombre doctets consommés

Voisin-Polian : Introduction à Java 19 InputStream Deux classes dérivées FileInputStream, pour les fichiers, avec trois constructeurs FileInputStream(String nom) FileInputStream(File f) FileInputStream(FileDescriptor fd) ByteArrayInputStream pour les données « en mémoire », avec deux constructeurs ByteArrayInputStream(byte[] b) ByteArrayInputStream(byte[] b, int offset, int length)

Voisin-Polian : Introduction à Java 20 Exemple de lecture dans un fichier public static void main (String[] args) { FileInputStream ficLect; int taille, i = 0, bt, offset; byte[] data; try { ficLect = new FileInputStream(args[0]); // ou bien File f = new File(args[0]); // ficLect = new FileInputStream(f); taille = ficLect.available(); System.out.println("taille : " + taille); // lecture des donnees > cf. transparent suivant ficLect.close(); } catch (java.io.FileNotFoundException ex) { System.out.println("Fichier inexistant : " + ex); } catch (IOException ex) { System.out.println("erreur d'entree-sortie : " + ex); } Q: Ce code est-il correct ?

Voisin-Polian : Introduction à Java 21 Exemple de lecture dans un fichier (suite) lecture octet par octet data1 = new byte[taille]; bt = ficLect.read(); while (bt != -1) { data1[i++] = (byte) bt; bt = ficLect.read(); } lecture d'un coup data2 = new byte[taille]; i = ficLect.read(data2); lecture par blocs data3 = new byte [taille] ; offset = 0 ; i = ficLect.read(data3, offset, 10); while (i > 0) { offset += i; i = ficLect.read(data3, offset, 10); }

Voisin-Polian : Introduction à Java 22 La classe (abstraite) OutputStream Principales méthodes : abstract void write () écriture dun octet (doit être redéfinie) void write(byte[] b) void write(byte[] b, int off, int len) écriture dun tableau doctets void close() void flush()

Voisin-Polian : Introduction à Java 23 OutputStream Classes dérivées FileOutputStream pour les fichiers, avec quatre constructeurs FileOutputStream (String nom) FileOutputStream(String nom, boolean append) FileOutputStream(File f) FileOutputStream(FileDescriptor fd) ByteArrayOutputStream pour les données « en mémoire »

Voisin-Polian : Introduction à Java 24 Exemple décriture dans un fichier public static void main (String[] args) { FileInputStream ficLect; FileOutputStream ficEcr1, ficEcr2; int taille, i = 0, bt, offset; byte[] data; try { ficLect = new FileInputStream(args[0]) ; taille=ficLect.available(); data=new byte[taille]; i=ficLect.read(data); ficLect.close(); // ecriture octet par octet ficEcr1 = new FileOutputStream(args[0] + ".c1"); for(i=0; i<taille; i++) { ficEcr1.write(data[i]);} ficEcr1.close( ) ; // ecriture dun seul coup ficEcr2 = new FileOutputStream(args[0] + ".c2") ; ficEcr2.write(data); ficEcr2.close(); } catch (java.io.FileNotFoundException ex) { System.out.println("Fichier inexistant : " + ex ); } catch (IOException ex) { System.out.println("erreur d'entree-sortie : " + ex); } }

Voisin-Polian : Introduction à Java 25 InputStream La classe dérivée FilterInputStream sert de classe de base à de nombreuses classes dérivées spécialisant la lecture. Parmi celles-ci, la classe DataInputStream permet de lire les principaux types de données constructeur à partir dun InputStream DataInputStream(InputStream input) quelques méthodes boolean readBoolean(); double readDouble(); char readChar();

Voisin-Polian : Introduction à Java 26 OutputStream La classe dérivée FilterOutputStream sert de classe de base à de nombreuses classes dérivées spécialisant lécriture. Parmi celles-ci, la classe DataOutputStream permet décrire les principaux types de données constructeur à partir dun OutputStream DataOutputStream(OutputStream output) quelques méthodes void writeBoolean(boolean); void writeDouble(double); void writeChar(char);

Voisin-Polian : Introduction à Java 27 Lecture/Ecriture avec Data….Stream public static void main ( String[] args) { DataInputStream ficLect; DataOutputStream ficEcr; double pi = , pi2; int ent = 12879, ent2; try { ficEcr = new DataOutputStream(new FileOutputStream(args[0])); ficEcr.writeDouble(pi); ficEcr.writeInt(ent); ficEcr.close(); ficLect = new DataInputStream(new FileInputStream(args[0])); pi2 = ficLect.readDouble(); ent2 = ficLect.readInt(); ficLect.close() ; System.out.println("pi=" + pi + " pi2=" + pi2); System.out.println("ent=" + ent + " ent2=" + ent2); } catch(java.io.FileNotFoundException ex){ System.out.println("Fichier inexistant : " + ex ); } catch (IOException ex) { System.out.println("erreur d'entree-sortie : " + ex); }

Voisin-Polian : Introduction à Java 28 Lecture/Ecriture en mémoire public static void main(String[] args) { ByteArrayOutputStream ficMemoire ; DataInputStream ficLect; DataOutputStream ficEcr; byte bt[] ; double pi = , pi2; int ent = 12879, ent2; try { ficMemoire = new ByteArrayOutputStream(); ficEcr = new DataOutputStream(ficMemoire); ficEcr.writeDouble(pi); ficEcr.writeInt(ent); bt = ficMemoire.toByteArray(); ficEcr.close(); ficLect = new DataInputStream( new ByteArrayInputStream(bt)); pi2 = ficLect.readDouble(); ent2 = ficLect.readInt(); ficLect.close(); } catch

Voisin-Polian : Introduction à Java 29 La classe PrintStream Dérivée de la classe FilterOutputStream, la classe PrintStream permet les sorties « formatées » sur un flot de sortie un constructeur PrintStream ( OutputStream os) quelques méthodes void print ( int ) void println ( int ) void print ( String ) void println ( String ) Les champs statiques err et out de la classe System sont des PrintStream alors que le champ statique in est un InputStream Il existe la classe PrintWriter (dérivée de Writer ), plus récente, et très voisine

Voisin-Polian : Introduction à Java 30 Utilisation de la classe PrintStream public static void main(String[] args) { PrintStream ficTexte; int i = 12; double pi = ; try { ficTexte = new PrintStream(new FileOutputStream(args[0])); ficTexte.println("premiere ligne de texte"); ficTexte.println("avec un entier : " + i); ficTexte.println("avec un double : " + pi); ficTexte.close(); } catch (java.io.FileNotFoundException ex) { System.out.println( "Fichier inexistant : " + ex); } catch (IOException ex) { System.out.println( "erreur d'entree-sortie :" + ex); } Contenu du fichier créé premiere ligne de texte avec un entier : 12 avec un double :

Voisin-Polian : Introduction à Java 31 Les classes Reader et Writer La classe Reader est une classe abstraite spécialisée dans les entrées textuelles. Une classe dérivée InputStreamReader avec le constructeur suivant InputStreamReader(InputStream is) Une classe dérivée FileReader avec trois constructeurs FileReader (File ) FileReader (FileDescriptor fd) FileReader (String nom) Une classe dérivée BufferedReader avec le constructeur suivant BufferedReader(Reader) u Avec une méthode pour la lecture dune ligne de texte String readLine(); Une classe dérivée LineNumberReader avec le constructeur suivant LineNumberReader(Reader)

Voisin-Polian : Introduction à Java 32 Exemple de lecture dun fichier « texte » public static void main (String[] args) { BufferedReader ficLect; String ch; try { ficLect = new BufferedReader( new InputStreamReader( new FileInputStream(args[0]))); while (ficLect.ready()) { ch = ficLect.readLine(); System.out.println(ch); } ficLect.close(); } catch (java.io.FileNotFoundException ex) { System.out.println("Fichier inexistant : " + ex); } catch (IOException ex) { System.out.println("erreur d'entree-sortie : " + ex ); }

Voisin-Polian : Introduction à Java 33 Ecriture dans un fichier texte public class PrintW { public static void main(String[] args) throws IOException { // avec PrintWriter bufferisé et vidage de buffer : PrintWriter pt = new PrintWriter( new BufferedWriter( new FileWriter("toto.txt")), true); pt.println("j'ecris dans toto.txt le " " septembre"); // avec PrintStream bufferisé PrintStream pt2 = new PrintStream ( new BufferedOutputStream ( new FileOutputStream("tata.txt"))); pt2.println("j'ecris dans tata.txt le " " septembre"); pt2.flush(); // necessaire ou pt2.close ( ) }

Voisin-Polian : Introduction à Java 34 Exemple de lecture au clavier public static void main( String[] args) { BufferedReader clavier; double dbl; int ent; String ch; try { clavier = new BufferedReader( new InputStreamReader(System.in)); ch = clavier.readLine(); dbl = Double.parseDouble(ch); ch = clavier.readLine(); ent = Integer.parseInt(ch); clavier.close(); System.out.println("double lu : " + dbl); System.out.println("entier lu : " + ent); } catch (java.io.FileNotFoundException ex) { System.out.println("Fichier inexistant : " + ex); } catch (IOException ex) { System.out.println("erreur d'entree-sortie : " + ex ); }

Voisin-Polian : Introduction à Java 35 La sérialisation n La sérialisation permet décrire ou de lire des objets dans un flot binaire (en tant quobjets, sans avoir à les ramener à des éléments de types simples) n La sérialisation sert à : u archiver des objets dans un fichier u transmettre des objets sur un réseau u faire communiquer des application par des appels à des méthodes distantes (RMI) n La classe de lobjet doit implémenter linterface java.io.Serializable n Cette interface ne contient aucune méthode, elle autorise simplement les objets de la classe à être sérialisé

Voisin-Polian : Introduction à Java 36 La sérialisation (suite) La classe ObjectOutputStream permet décrire des objets sérialisables dans un flot binaire avec la méthode writeObject La classe ObjectInputStream permet de lire des objets sérialisables dans un flot binaire avec la méthode readObject n Les objets composés de types primitifs ou dobjets sérialisables sont sérialisables. La sérialisation de linstance de départ va entraîner la sérialisation des objets qui sont accessibles à partir d lui (graphe dobjets) n les « partages » (co-références) sont conservées dans un même flot binaire n la lecture demande des mécanismes internes particuliers (création dinstances sans appel aux constructeurs)

Voisin-Polian : Introduction à Java 37 La sérialisation (exemple) class EssaiSerial implements Serializable { String chaine = "coucou"; double val = 3.14 ; } public class Test { public static void main(String[] args) throws IOException, ClassNotFoundException { ObjectOutputStream s = new ObjectOutputStream( new FileOutputStream("toto.txt")); // > ecriture dun objet dans le fichier toto.txt s.writeObject(new EssaiSerial()); s.close(); // > lecture dun objet dans le fichier toto.txt ObjectInputStream e = new ObjectInputStream( new FileInputStream("toto.txt")); EssaiSerial es = (EssaiSerial) e.readObject(); e.close(); System.out.println(es.chaine + es.val); }