Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 1 JAV - TD 7 Les entrées / sorties JAVA Les Flux Le package java.io La gestion.

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
JAV - TD 6 Structures de données JAVA
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
COURS DE PROGRAMMATION ORIENTEE OBJET :
Système d’Exploitation
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 ~
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 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.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Architecture Client/Serveur
JAVA Les Entrées-sorties
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 7 IJA Les interfaces graphiques JAVA.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 3 IJA Bases du langage bibliothèques standards composition communication entre objets.
1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
Frédéric Le Mouël, Stéphane Frénot, Frédérique Laforest, Tarak Chaari – Dpt TC JAV 1 JAV – TD 8 Les threads en Java.
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
Java et sockets TCP.
Windows NT/2000/XP Enjeux et contraintes techniques
Langages de programmation TP6
JAVA.
Communication client-serveur
1.2 Programmes et données Les programmes comme les données sont stockés dans les mémoires (centrales et périphériques) des ordinateurs Informatique.
Environnement de développement des BD
Pas de variable globale
Les notions de classe et d'objet
Les commandes du système de fichiers
Programmation en C++ IO en C++/SL
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
AO (Architecture des ordinateurs)
Installation et Configuration Internet Information Server (IIS 5)
Accès aux fichiers en C.
Work: ISA8895 Implementation Section: Interoperability Chapter: B2O
Présentation python : Épisode 3
Commande show dialer ccnp_cch ccnp_cch.
Windows 7 NTFS.
Communications via sockets
Programmation en C++ IO en C++/SL
Bonnes pratiques Orienté Objet et Java
Puzzler.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Plus de 4000 langages....
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
Applications Terminales pour Cartes à puce
Les classes et les objets
Programmation Android Les listes
BUFFER CIRCULAIRE Meryem EL BAKRI. PLAN Introduction Buffer circulaire Fonctionnement.
Schéma de conception Factory Method Exemple
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Principes de programmation (suite)
Le langage C# : Partie 1.
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
COURS ADMINISTRATION DE BASES DE DONNÉES IMPORT/EXPORT Karim LABIDI ISET Ch
Bases de données Singleton pour la connexion
Implémentation de FTP Rappel sur FTP Relation entre un site Web et FTP
TP N°6: Construction d’un Serveur Multi-Client
TP N°4 Développement d’ une application
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
TP RC.
TP N°5: Partie I Programme Serveur.
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 1 JAV - TD 7 Les entrées / sorties JAVA Les Flux Le package java.io La gestion de fichiers en java La sérialisation d’objets

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 2 Les Flots/Flux/Streams Toutes les entrées/sorties en JAVA sont gérées par des flux (streams)‏ –Lecture du clavier –Affichage sur la console –Lecture/écriture dans un fichier –Echange de données réseau avec des sockets Stream: objet JAVA possédant la caractéristique de pouvoir envoyer ou recevoir des données

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 3 Flux / Flots / Stream Un flux est une serie d'informations envoyée sur un canal de communication C'est le paradigme utilisé dans le monde objet pour représenter une communication entre 2 entités Un flux se comporte comme une rivière : –Il faut une source/émetteur –Et un recepteur/consommateur Un flux est bidirectionnel, par contre les points d'accès (émetteur/consommateur) ne peuvent travailler que dans un seul sens

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 4 Circulation d’information sur un flux Les flux informatiques ne véhiculent que des octets Les émetteurs et les récepteurs se chargent de transformer les octets sous des formes plus intéressantes pour les entités (data, buffer, crypto...)‏ Emetteur et récepteur doivent se mettre d'accord sur le format des structures envoyées (notion de protocole d'accord)‏ La bibliothèque java.io définit l'ensemble des transformations que l'on peut désirer sur un ensemble d'octets arrivant dans le flux Il existe également des émetteurs et des récepteurs standards E1E2 Flux Récepteur Emetteur Récepteur Emetteur

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 5 Emetteurs et récepteurs standards du système d'exploitation Il existe 3 flux standards pour un système d'exploitation –Les octets circulant entre une application (A) et l'écran (E) pour indiquer une information standard System.out –Les octets circulant entre une application (A) et l'écran (E) pour indiquer une information d'erreur System.err –Les octets circulant entre le clavier (C) et une application (A) System.in Exercice: Représentez sur un schéma les flux et les points d’accès liés aux entrées/sorties standards

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 6 Exemple de saisie avec System.in Voici le code qui lit l'entrée du clavier et qui envoie le caractère sur la sortie standard (affichage du code UNICODE du caractère)‏ import java.io.IOException; public class MainClass { public static void main(String[] args) throws IOException{ System.out.println("Entrez un caractère"); int inChar = System.in.read(); System.out.println("Vous avez saisi le caractère de code : "+inChar); }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 7 Intanciation des émetteurs / récepteurs Il existe des entités classiques pouvant être la source ou la destination d'octets –Le fichier : il permet de stocker des octets Classe: java.io.File (nommage, droits d’accès et propriétés d’un fichier ou d’un répertoire)‏ File f=new File(“/tmp/toto”); –La socket réseau : elle permet d'envoyer des octets à une autre machine Classe: java.net.Socket (point d’accès pour une connexion TCP/IP entre deux machines)‏ Socket s=new Socket(“ 80)‏

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 8 Instanciation des flux de communication Après la création de la source ou de la destination, il est nécessaire de construire des objets d'accès au flux pour pouvoir échanger les données Les accès sur les points d'entrée ne sont pas toujours homogènes : File f=new File(“/tmp/toto”); FileInputStream fin=new FileInputStream(f); val=fin.read(); Socket s=new Socket(“ 80); InputStream sin=s.getInputStream(); val2=sin.read(); private void lecture (InputStream in) throws IOException{ int i=in.read(); while(i!=-1) {System.out.println(i); i=in.read();} } Que peut-on dire des classes FileInputStream et InputStream ? Quelles sont les fonctions que l'on peut appliquer sur un flux d'entrée ? Et sur un flux de sortie ?

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 9 java.io: arborescence de classes Oh, mon Dieu, qu'ont-ils fait de la SocketInputStream ?

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 10 API : InputStream int available()‏ –Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. int read()‏ –Reads the next byte of data from the input stream. int read(byte[] b)‏ –Reads some number of bytes from the input stream and stores them into the buffer array b. int read(byte[] b, int off, int len)‏ –Reads up to len bytes of data from the input stream into an array of bytes. void close()‏ –Closes this input stream and releases any system resources associated with the stream.

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 11 java.io: arborescence de classes

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 12 Exercice: copie de fichiers Ecrire une classe Copy qui réalise la copie d’un fichier dans un autre. Exemple d’utilisation: java Copy sourceFile.txt destFile.txt

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 13 Que se passe-t-il si ? Que doit faire une entité lorsqu'elle veut envoyer un long, double… ? Que doit faire une entité lorsqu’elle tente de lire un byte, et que celui-ci n'est pas encore disponible ? Quelle différence y a-t-il en C entre 'a' et “Bonjour”? Quelle différence y a-t-il entre Unix et Windows dans le texte suivant? “Bonjour,\nTout le monde” ==> Il faut “décorer” nos flux

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 14 Décoration de flux La décoration de flux est l'art de traiter une série d'octets avant de les transmettre à l'application demandeuse. Il existe 4 familles de décorations de flux –Data : permet de convertir les bytes en structure primitive (long, boolean, double...)‏ –Character : permet de convertir les bytes en texte –Object : permet de convertir les bytes en structure objet –Service : buffer, crypto, gzip permet d'appliquer des fonctions spécifiques sur la lecture Instanciation de décorateur: DataInputStream dis=new DataInputStream((new FileInputStream(“/tmp/toto”);

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 15 Flux de données: Data(Input|Output)Stream Ces classes permettent de lire et d'écrire des types primitifs et des lignes sur des flux. FileInputStream fis = new FileInputStream("source.txt"); DataInputStream dis = new DataInputStream(fis); int i = dis.readInt(); double d = dis.readDouble(); FileOutputStream fos = new FileOutputStream("cible.txt"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(123); dos.writeDouble( );

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 16 Flux de caractères Ajout de la notion de flux de caractères (character Streams)‏ –Les InputStream et OutputStream se basent sur la lecture et écriture d’octets (bytes)‏ –Or les caractères sont codés sur 2 octets  Utilisations de deux classes (writer et reader) à la place de InputStream et OutputStream  Ecriture facile des caractères UNICODE  Pour lire et écrire directement des caractères UNICODE dans un fichier, il est conseillé d’utiliser FileReader et FileWriter à la place de FileInputStream et FileOutputStream

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 17 Flux d’objets : Sérialisation La sérialisation (Serialization) est le processus de transformation d'un objet en un flux d'octets, et la désérialisation est le processus inverse. La sérialisation permet à un objet d'être facilement sauvé sur un fichier ou transféré sur le réseau Les classes doivent implanter l'interface Serializable

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 18 Flux d’objets : Syntaxe La classe de l’objet qu’on veut sérialiser doit implémenter la classe java.io.Serializable public class Elem implements java.io.Serializable{ private int i; private Hello[] h;... }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 19 Sérialisez des instances de l'objet suivant dans un fichier “/tmp/test” : public class Entry { private java.util.Date d; private Object src; private String message; } Sérialisation : exercice 1

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 20 Désérialisez les instances précédentes. Sérialisation : exercice 1 suite

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 21 Exercice: Ecriture de logs Ecrire un utilitaire de gestion de logs « WriteLog ». Chaque log représente une ligne dans un fichier texte. Sur chaque ligne on trouve la date d’écriture, l’identifiant de son écrivain et son commentaire. Utilisez une classe Entry ayant pour attributs : la date, l’identifiant de l’écrivain et son commentaire. Cette classe doit définir la méthode de sérialisation de ses attributs dans un flux de sortie OutputStream (qui aura été préalablement ouvert).

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 22 Exercice: Lecture de logs Ecrire un utilitaire « ScanLog » de lecture des logs enregistrés dans l’exercice précédent. Cet utilitaire doit permettre un parcours sélectif en utilisant les options suivantes: -after d : pour afficher les enregistrements écrits après la date d -before d : pour afficher les enregistrements écrits avant la date d -user u : pour afficher que les enregistrements écrits par l’écrivain u

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV 23 java.io: ce qu’il faut retenir