STREAMS (et fichiers).

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Flots et Sérialisation des objets
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.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Système d’Exploitation
Introduction à la programmation (Java)
IFT 6800 Atelier en Technologies d’information
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,
Entrées / Sorties.
Strings et Tableaux en Java
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
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.
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.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Java – Les entrées / sorties
Java et sockets TCP.
Langages de programmation TP6
JAVA.
I- ANALYSE DU BESOIN / Plan
Exploitation de logiciels :
I- ANALYSE DU BESOIN / Plan
Environnement de développement des BD
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Pas de variable globale
Les commandes du système de fichiers
Pointeurs et langage C.
JavaScript.
Javadoc et débogueur Semaine 03 Version A17.
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
AO (Architecture des ordinateurs)
I21 Algorithmique et programmation II
Principes de programmation (suite)
11ième Classe (Mardi, 18 novembre) CSI2572
Langages de programmation TP7
Les fonctions.
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Arguments de la ligne de commande
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Mini synthèse accès fichier en C
Elaboré par Ahmed BESSAIDI
Programmation en C++ C++ de base
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Plus de 4000 langages....
Calcul Scientifique Initiation à SCILB
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Programmation Android GUI (widgets) et ressources
Développement d’une Application CORBA
Programmation Android Les listes
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
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.
INTERFACE ET POLYMORPHISME
LISTES.
Lecture/Écriture de fichiers (I/O)
Structure de données Les listes.
TP N°1 : GUI en NetBeans Module R & C Université de Jijel
DICTIONNAIRES (MAPS).
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:

STREAMS (et fichiers)

OBJECTIFS Lire et écrire des fichiers Être familier avec les concepts de fichiers textes et binaires Lire et écrire des objets avec la sérialisation Apprendre à traiter la ligne de commandes Savoir distinguer et utiliser les fichiers séquentiels et aléatoires (à accès direct) 4/26/2019 IFT1020

CODES TestFichierTexte.java (digits) TestBouquet.java (objets sérialisables) 4/26/2019 IFT1020

Deux manières de sauver des données Format texte Format binaire 4/26/2019 IFT1020

Format texte Lisible par l’humain Séquences de caractères Stockage des entiers avec des caractères: 12345 en fait ‘1’ ’2’ ’3’ ’4’ ’5’ Dans ce cas, utilisez les classes Reader et Writer ainsi que leurs sous-classes 4/26/2019 IFT1020

Format binaire Plus compact et efficace Les entiers sont stockés avec leur repésentation binaire, 00 00 48 57… Dans ce cas, utilisez InputStream et OutputStream ainsi que leurs sous-classes 4/26/2019 IFT1020

Lire des données textes sur fichier Créer un FileReader Utilisez sa méthode read pour lire un caractère à la fois retourne le caractère suivant dans un int ou l’entier -1 si à la fin du fichier Il faut donc tester pour -1 Si n’est pas -1, caster dans un char Fermer le fichier quand c’est terminé 4/26/2019 IFT1020

Code pour lire un caractère sur disque FileReader lecteur = new FileReader(“donnees.txt"); int suivant = reader.read(); char c; if(suivant != -1) c = (char)suivant; ... reader.close(); 4/26/2019 IFT1020

Code pour écrire un caractère sur le disque FileWriter scripteur = new FileWriter(“donnees.txt"); ... char c=''; ... scripteur.write(c); ... scripteur.close(); 4/26/2019 IFT1020

Pour lire des données binaires sur disque Créer un FileInputStream Utilisez sa méthode read pour lire un byte retourne le prochain byte dans un int ou l’entier -1 à la fin du fichier Il faut donc tester pour -1 Si non -1, caster dans un byte Fermer le fichier quand terminé 4/26/2019 IFT1020

Code pour lire un byte du disque FileInputStream fluxEntree = new FileInputStream(“donnees.dat"); int suivant = fluxEntree.read(); byte b; if(suivant != -1) b = (byte)suivant; ... fluxEntree.close(); 4/26/2019 IFT1020

Code pour écrire un byte sur disque FileOutputStream fluxSortie = new FileOutputStream(“donnees.txt"); ... byte b = 0; ... fluxSortie.write(b); ... fluxSortie.close(); 4/26/2019 IFT1020

Écrire des fichiers de textes Utiliser un PrintWriter pour Briser les nombres et chaînes en des caractères individuels Les envoyer un à la fois vers un FileWriter Code pour créer un PrintWriter FileWriter scripteur = new FileWriter(“donnees.txt”) PrintWriter sortie = new PrintWriter(scripteur); 4/26/2019 IFT1020

Écrire des fichiers textes Utilisez print et println pour imprimer des nombres, objets ou chaînes sortie.println(29.95); sortie.println(new Rectangle(5,10,15,25)); sortie.println(“Bonjour!"); 4/26/2019 IFT1020

Lire des fichiers textes Utilisez un BufferedReader Soit lire un caractère à la fois à partir d’un FileReader Soit assembler les caractères dans une ligne et la retourner Pour convertir des chaînes en nombres, utilisez Integer.parseInt Integer.parseDouble 4/26/2019 IFT1020

Lire des fichiers textes Code pour lire un fichier texte FileReader lecteur = new FileReader(“donnees.txt"); BufferedReader entree = new BufferedReader(lecteur); String ligneEntree = entree.ReadLine(); double x = Double.parseDouble(ligneEntree); 4/26/2019 IFT1020

Allons voir le code de TestFichierTexte.java… 4/26/2019 IFT1020

La classe et le dialogue de fichiers La classe File décrit des fichiers ou des répertoires sur disque Créer un objet File File fichier = new File("donnees.txt"); Un objet de la classe File ne s’utilise pas directement. Il faut « le passer » à un lecteur ou à un scripteur, ou bien à un stream. 4/26/2019 IFT1020

La classe File Quelques méthodes de la classe File : delete renameTo exists Construire un FileReader à partir d’un objet File : FileReader lecteur = new FileReader(fichier); 4/26/2019 IFT1020

Dialogue de fichiers… Utilisez JFileChooser pour laisser un utilisateur fournir un nom de fichier à travers un dialogue GUI Pour construire un objet JFileChooser, il faut appeler sa méthode showOpenDialog ou showSaveDialog Il faut spécifier null ou la composante GUI dans laquelle faire apparaître le dialogue 4/26/2019 IFT1020

Dialogue de fichiers Si l’utilisateur choisit un fichier: JFileChooser.APPROVE_OPTION est retournée Si l’utilisateur annule la sélection: JFileChooser.CANCEL_OPTION est retournée Si un fichier est choisi, utilisez la méthode GetSelectedFile pour obtenir un objet File qui décrit le fichier 4/26/2019 IFT1020

Le dialogue JFileChooser 4/26/2019 IFT1020

Code pour utiliser un JFileChooser JFileChooser selecteur = new JFileChooser(); FileReader entree = null; if(selecteur.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File fichier = selecteur.getSelectedFile(); entree = new FileReader(fichier); } 4/26/2019 IFT1020

Arguments de la ligne de commandes On lance un programme de la ligne de commandes On spécifie les arguments après le nom du programme Dans le programme, on accède et traite les chaînes des paramètres de qui se retrouvent dans l’argument args de la méthode main 4/26/2019 IFT1020

Exemple d’une ligne de commandes Java MonProgramme -d fichier.txt class MyProgram { public static void main(String[] args) { ... } args[0] "-d" args[1] "fichier.txt" 4/26/2019 IFT1020

Streams d’objets La classe ObjectOutputStream sert à sauver des objets sur disque La classe ObjectInputStream sert à lire des objets sur disque Les objets sont sauvés en format binaire 4/26/2019 IFT1020

Écrire un objet Baloune sur un fichier Baloune b = ...; ObjectOutputStream sortie = new ObjectOutputStream( new FileOutputStream(“balounes.dat")); sortie.writeObject(b); 4/26/2019 IFT1020

Lire un objet Baloune d’un fichier ObjectInputStream entree = new ObjectInputStream(new FilInputStream(“balounes.dat")); Baloune b = (Baloune)entree.readObject(); La méthode readObject peut lancer (throw) une exception de type ClassCastException Vous devez l’attraper (catch) ou la déclarer 4/26/2019 IFT1020

Écrire et lire un ArrayList sur fichier ArrayList a = new ArrayList(); //ajouter des objets à la liste sortie.writeObject(a); Lire ArrayList a = (ArrayList)entree.readObject(); 4/26/2019 IFT1020

L’interface Serializable Les objets qu’on écrit sur un stream d’objets doivent appartenir à une classe qui implante l’interface Serializable class Baloune implements Serializable { ... } L’interface Serializable ne contient aucune méthode. 4/26/2019 IFT1020

Allons voir le code Bouquet.java… 4/26/2019 IFT1020

Accès séquentiel et aléatoire Sequentiel Un fichier est traiter dans l’ordre un byte à la fois Aléatoire Accès à des endroits arbitraires dans le fichier 4/26/2019 IFT1020

Séquentiel vs. Aléatoire RandomAccessFile Pour ouvrir un fichier à accès aléatoire (ou direct) en mode de lecture et d’écriture RandomAccessFile f = new RandomAcessFile(“balounes.dat","rw"); 4/26/2019 IFT1020

Déplacements dans le fichier Pour déplacer le pointeur du fichier à un byte spécifique f.seek(n); Pour connaître la position courante du pointeur long ptr = f.getFilePointer(); Pour obtenir le nombre de bytes dans un fichier long taille = f.length(); 4/26/2019 IFT1020