Cours 161 16 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,

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

Sérialisation des objets
Flots et Sérialisation des objets
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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.
Approfondissement du langage
(Classes prédéfinies – API Java)
Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
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 -
JAV - TD 6 Structures de données JAVA
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
Les entrées /sorties en Java François Bonneville
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.
Cours d ’Informatique, DEUG 2 MASS/MIASS
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
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.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Système d’Exploitation
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
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.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
POO-L3 H. Fauconnier1 Supplément gratuit…. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double.
Design Pattern: Decorator
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Structures de données IFT-10541
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Les fichiers texte en C++
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.
J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~
4 Introduction des objets. Les chaînes et tableaux
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.
Cours n°3 rappels. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double a = 5.6d ; double b =
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
11/04/ L'héritage Cours 7 Cours 7.
Mastère MIAGE, 2006 Systèmes Distribués Fabrice Huet
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Tutorat en bio-informatique
Entrées / Sorties.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Strings et Tableaux en Java
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
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
Héritage Conception par Objet et programmation Java
JAVA Les Entrées-sorties
Langage de Programmation Orientée Objet : C++
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
Transcription de la présentation:

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, disque, liaison réseau, clavier, …). En tout, une soixantaine de flux !!! On peut composer ses propres flux en combinant les flux de base :  Pour l’accès aux fichiers,  Pour gérer la bufferisation.  Pour lire des données formatées,  Pour traiter des fichiers ZIP,  etc… On distingue : les flux d’entrée et les flux de sortie. les flux d’octets et les flux de char (Unicode)

Cours 163 Quatre classes abstraites de base  ne peuvent être instanciées.  InputStream et OutputStream Lecture, écriture d’un seul octet ou d’un flot d’octets.  Reader et Writer lecture, écriture de texte Unicode.

Cours 164 D’autres classes permettent d’ajouter des propriétés Traitement de fichiers d’octets FileInputStream, FileOutputStream Mécanisme de bufferisation BufferedInputStream, BufferedOutputStream Traitement des types numériques DataInputStream, DataOuputStream Traitement de fichiers et construction d’Unicode FileReader, FileWriter Mécanisme de bufferisation BufferedReader, BufferedWriter Pour obtenir plusieurs propriétés il va falloir utiliser plusieurs constructeurs

Cours 165 Flux d’octets  Flux de fichiers  Flux bufferisés  Flux de données  Combinaisons de flux La classe File Flux de texte Unicode

Cours 166 Flux d’octets Lecture ou écriture d’un flot d’octets.

Cours 167 InputStream File InputStream FilterInputStream Buffered InputStream InflaterInputStream Flux d’octets Zip IinputStream Data InputStream

Cours 168 public abstract int read() throw IOException Lecture d’un seul octet, renvoie cet octet ou -1 int read (byte[ ] b)Lecture d’un tableau d’octets int read (byte[ ] b, int offset, int length) long skip (long n)Saute n octets int available()Nombre d’octets disponibles sans blocage void close()Ferme le flux d’entrée. void mark(int readLimit)Place un marqueur à la pos courante void reset()Revient au dernier marqueur boolean markSupported()true si le flux accepte le marquage java.io.InputStream (classe abstraite)

Cours 169 public abstract void write (int b) throw IOException Ecrit un octet de données public void write (byte[ ] b) public void write(byte[ ] b, int offset, int len) public void close()Vide le tampon et ferme le flux. public void flush()Vide le tampon (envoie les données vers la cible). java.io.OutputStream (classe abstraite)

Cours 1610 FileInputStream (String chemin)Crée un flux de fichier en entrée pour le fichier désigné par chemin. FileInputStream (File f)Le chemin est construit à partir de l’objet de type File FileOuputStream (String chemin)Attention, un fichier de même nom sera automatiquement détruit FileOuputStream (String chemin, boolean append) Si append == true, les données seront ajoutées à un fichier existant. FileOuputStream(File f)Le chemin est construit à partir de l’objet de type File Flux de Fichiers java.io.FileInputStream hérite de InputStream java.io.FileOutputStream hérite de OutputStream

Cours 1611 Lecture, écriture dans un flux de fichiers Possèdent des méthodes read et write qui redéfinissent les méthodes ancêtres. Donc mêmes noms, même signature. Il n’est pas nécessaire de les redécrire.

Cours 1612 Construction d’un flux d’octets pris dans un fichier Le flot est lu dans le fichier "employés.dat" du répertoire courant. FileInputStream fic = new FileInputStream("employés.dat"); Ou on construit un objet File : File f = new File("employés.dat"); puis : FileInputStream fic = new FileInputStream(f); Attention au caractère d’échappement \ Ecrire : "C:\\windows\\win.ini"

Cours 1613 BufferedInputStream (InputStream in)Crée un flux bufferisé, la taille du tampon est par défaut BufferedInputStream (InputStream in, int n)La taille du buffer est choisie par l’utilisateur BufferedOutputStream (OutputStream out) BufferedOutputStream (OutputStream out, int n) Flux d’octets bufferisés Ajout d’un mécanisme de bufferisation à un flux

Cours 1614 Flux de données Possèdent des méthodes pour lire ou écrire tous les types primitifs de base mais pas de méthodes pour accéder aux fichiers. DataInputStream (InputStream in) DataOuputStream (OutputStream out) readInt(), readShort(), redLong(), readFloat(), readDouble(), readChar(), readBoolean(), readUTF() writeChars(…), writeInt(…), …

Cours 1615 Construction d’un flux de données dans un fichier  On construit un flux de fichier.  On le transmet au flux de données que l’on crée. FileInputStream fic=new FileInputStream ("Employé.dat"); DataInputStream din = new DataInputStream (fic); double s = din.readDouble(); Il n’y a qu’un seul fichier créé. Par défaut les flux ne sont pas bufferisés.

Cours 1616 void writeInt (int i) void writeDouble (double d)…. void writeChars(String s) void writeChar (int v) Ecrit 2 octets par caractère int readInt () double readDouble () char readChar ()Lit deux octets et renvoie un char Quelques méthodes des flux de data

Cours 1617 Construction d’une lecture bufferisée : on passe un FileInputStream à un BufferedInputStream. new BufferedInputStream (new FileInputStream("Employé.dat")) Combinaison de flux

Cours 1618 Utilisation des méthodes de DataInputStream readInt()…. dans un fichier bufferisé. DataInputStream din = new DataInputStream (new BufferedInputStream (new FileInputStream(" Employé.dat") ) ) ; Lire des nombres dans un fichier ZIP ZipInputStream zin = new ZipInputStream ( new FileInputStream ("Employé.zip") ) ; DataInputStream din = new DataInputStream (zin);

Cours 1619 Exemple DataInputStream et DataOutputStream Ecriture puis relecture d’un fichier d’enregistrements composés :  D’une chaîne de 10 caractères Unicode  De trois float. Les enregistrements sont de longueur fixe. La chaîne est écrite en Unicode, on emploie writeChars(String s) puis readChar() à la relecture. Pour traiter des enreg de longueur variable, il faut mettre la longuer devant chaque élément variable.

Cours 1620 import java.io.*; class TestFicData { public static void main(String[] arg) { DataOutputStream fs = null; DataInputStream fe = null; try{ // Création du flux de sortie fs = new DataOutputStream(new FileOutputStream("essais.dat")); // Création de deux enreg Enreg e1 = new Enreg("Toto ", new float[] {10f, 12f, 12.5f}); Enreg e2 = new Enreg("Gaston ", new float[] {8.5f, 11f, 13.5f}); e1.écrireEnreg(fs); // Ecriture e2.écrireEnreg(fs); fs.close();// Fermeture } catch (IOException e){ }

Cours 1621 // RELECTURE try { fe = new DataInputStream( (new FileInputStream("essais.dat"))); Enreg et1 = new Enreg(); et1 = et1.lireEnreg(fe); Enreg et2 = new Enreg(); et2 = et2.lireEnreg(fe); fs.close ();// Fermeture } catch(IOException e){ } } }// Fin de la classe TestFicData

Cours 1622 class Enreg { private String nom = ""; // 10 char Longueur fixe private float [] note = new float[3]; Enreg (String nom, float[] note){ this.nom = nom; this.note = note; } Enreg (){ this("", new float[3]); } public String toString (){ return nom + " " + note[0] + " "+ note[1] + " "+ note[2]; } …..

Cours 1623 Suitevoid écrireEnreg (DataOutputStream fs) { try{ fs.writeChars (nom);// Ecrit la chaîne de 10 char for(int i = 0; i < note.length; i++) fs.writeFloat (note[i]); } catch(IOException e) { System.out.println(e);} } Enreg lireEnreg (DataInputStream fe) { String s = ""; try { for(int i = 0; i < 10; i++ ) s += fe.readChar (); nom = s; for(int i = 0; i < 3 ; i++ ) note[i] = fe.readFloat (); } catch (IOException ex) { System.out.println("lireEnreg " + ex);} return this ; } }// Fin de la classe Enreg

Cours 1624 Introduction d’une bufferisation dans cet exemple Il suffit de remplacer le constructeur par fe = new DataInputStream ( new BufferedInputStream ( new FileInputStream ("essais.dat") ) );

Cours 1625 La classe File Encapsule les fonctionnalités nécessaires pour la gestion de fichiers. File(String pathName) boolean delete() boolean exists() True si le fichier ou répertoire existe. String getPath() long length() boolean mkdir() Make Dir boolean renameTo(File dest)

Cours 1626 boolean canRead() boolean canWrite() String getAbsolutePath() String getName() boolean isDirectory() boolean isFile() boolean isHidden() long lastModified() long length() boolean setReadOnly() Renvoie true si l’opération a réussi.

Cours 1627 Flux de texte Lecture écriture de texte Unicode

Cours 1628 Flux de texte Unicode Codage du Système d’exploitation Windows, Mac … Reader Produit de l’Unicode Writer Produit du code du système

Cours 1629 Reader et Writer Classes abstraites Un reader lit des caractères codés selon le système d’exploitation et restitue du texte Unicode. Un writer fait la transformation inverse. Le code du système d’exploitation peut être choisi. Les méthodes read ou write ne savent traiter qu’un seul caractère Unicode ou un tableau de caractères. Le traitement de fichier, le mécanisme de bufferisation seront ajoutés par des constructeurs spécifiques.

Cours 1630 Reader Buffered Reader FilterReader LineNumber Reader Flux de texte File Reader InputStream Reader

Cours 1631

Cours 1632 Fichiers Random

Cours 1633 La classe Console