Cours 14 Les fichiers



Documents pareils
Flux de données Lecture/Ecriture Fichiers

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Programmation système I Les entrées/sorties

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

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

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

Les fichiers. Chapitre 4

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

ACTIVITÉ DE PROGRAMMATION

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

TD3: tableaux avancées, première classe et chaînes

Java Licence Professionnelle CISII,

Programmer en JAVA. par Tama

Programmation impérative

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

Cours 6 : Tubes anonymes et nommés

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

Cours de Système : Gestion de Fichiers

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

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Utilisation d objets : String et ArrayList

Le prototype de la fonction main()

TP, première séquence d exercices.

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

Chapitre 2. Classes et objets

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

TP : Gestion d une image au format PGM

COMPARAISONDESLANGAGESC, C++, JAVA ET

Arbres binaires de recherche

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

Une introduction à Java

Cours de Systèmes d Exploitation

Programmation par les Objets en Java

I. Introduction aux fonctions : les fonctions standards

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Conventions d écriture et outils de mise au point

Cours 1: Java et les objets

TP1 : Initiation à Java et Eclipse

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

Introduction au langage C

Chapitre I Notions de base et outils de travail

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Java DataBaseConnectivity

Cours Informatique Master STEP

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

Programmation Internet en Java

Module http MMS AllMySMS.com Manuel d intégration

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

SYSTÈME DE GESTION DE FICHIERS

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Programmation Par Objets

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

La mémoire. Un ordinateur. L'octet. Le bit

1 Lecture de fichiers

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Langage Java. Classe de première SI

Le stockage local de données en HTML5

Chapitre 1 : Introduction aux bases de données

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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)

Chapitre VI- La validation de la composition.

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Héritage presque multiple en Java (1/2)

Objets et Programmation. origine des langages orientés-objet

3IS - Système d'exploitation linux - Programmation système

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

Package Java.util Classe générique

Le langage C. Séance n 4

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Initiation. àl algorithmique et à la programmation. en C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Programmation système de commandes en C

I. MySQL : Serveur et SGBD

Programmation avec des objets : Cours 7. Menu du jour

Le système de gestion des fichiers, les entrées/sorties.

Manuel de l'utilisateur CLAVIER ÉLECTRONIQUE LEVERSET AVEC PROGRAMMATION BLUETOOTH. ASSA ABLOY, le leader mondial en matière de solutions de porte

Bernard HAMM, Évelyne LAVOISIER

Programmation C++ (débutant)/instructions for, while et do...while

Les structures. Chapitre 3

RMI le langage Java XII-1 JMF

Organiser vos documents Windows XP

Cours Programmation Système

Cours 1 : La compilation

Transcription:

Cours 14 Les fichiers F. Gayral 1

Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une mémoire secondaire (bande, disquette, disque dur) Plusieurs types de fichiers Fichier binaire : Fichiers images, sons, videos Fichiers exécutables :.exe ou interprétables.class Fichier texte (~ lisibles dans un éditeur de texte) Code source d'un programme votre CV Des données sous forme textuelle : liste des caractéristiques de comptes bancaires F. Gayral 2

Problème de persistance des données Jusqu'à présent, les objets du programme n avaient d existence que pendant la durée de l exécution du programme - les données étaient définies dans le programme lui-même ou lues au clavier (entrée = clavier) - les résultats étaient affichés à l écran (sortie = terminal) A la fin de l exécution du programme, le contenu de la mémoire principale est perdue. F. Gayral 3

Problème de persistance des données Inconvénients - Les résultats sont perdus donc pas réutilisables - Les données du programme sont à définir à chaque fois que le programme s exécute Remèdes : transférer les informations entre la mémoire principale et les mémoires secondaires - Sauvegarder dans une base de données - Sauvegarder dans des fichiers textes sur le disque F. Gayral 4

Programme et fichier Les programmes peuvent avoir deux sortes d opérations concernant les fichiers Sauvegarder des données du programme dans un fichier en mémoire secondaire Les données existent en mémoire principale ; on veut les sauver dans un fichier Fichier en écriture Consulter (manipuler) des données présentes dans un fichier en mémoire secondaire Le fichier contenant les données existe ; il faut amener les données en mémoire principale pour que le programme les traite Fichier en lecture F. Gayral 5

Schéma du transfert Fichier sur le disque lecture écriture Données sur le disque Programme en mémoire centrale Programme manipulant le fichier Données en mémoire F. Gayral 6

Fichiers dans tous les langages (1) Besoin de faire le lien entre la mémoire secondaire et le programme Que ce soit en lecture ou en écriture Un fichier donné par son nom sur le disque est manipulé (créé, lu ou modifié) par un programme à l'aide d'une variable de type "fichier" Tout langage de programmation offre au programmeur : un ou des types pour travailler sur les fichiers dans un programme (FILE, ) ce type encapsule une structure de données aves différentes informations utiles au système d exploitation pour faire la correspondance F. Gayral 7

Fichiers dans tous les langages : besoin d'une variable associée au fichier Au nom du fichier sur le disque, doit correspondre une variable dans le programme d'un type/classe prédéfinie En C : type FILE* #include <stdio.h> FILE * f; f = fopen("adieux.txt","rt"); En Php : langage non typé $f = fopen('adieux.txt', 'r'); En Java : classe File File f = new File("adieux.txt"); F. Gayral 8 adieux.txt Fichier sur le disque bonjour salut ciao bye

Fichiers dans tous les langages (2) Besoin de disposer de fonctions/procédures/méthodes permettant les transferts d'informations entre la mémoire secondaire et la mémoire principale Tout langage de programmation offre au programmeur des fonctions/procédures/méthodes pour travailler sur les fichiers Les fichiers sont séquentiels : En lecture, on accède aux informations contenues dans le fichier les unes après les autres, dans l'ordre où elles apparaissent dans le fichier En écriture, on écrit les informations dans le fichier l'une derrière l'autre F. Gayral 9

Manipulation de fichiers dans tous les langages (3) Un fichier se «manipule» en 3 étapes Créer et ouvrir le fichier en lecture (ou en écriture) Si pas d'erreur d'ouverture du fichier Si lecture : Tant que le fichier n'est pas vide Si écriture : lire l'information courante du fichier et la traiter Tant qu'il y a des informations à écrire Fermer le fichier écrire l'information courante dans le fichier F. Gayral 10

Lecture d'un fichier F. Gayral 11

Exemple de lecture d'un fichier le fichier existe et on veut lire les données qu'il contient 1. Créer et ouvrir le fichier en lecture 2. Transfert des données une par une du disque vers la mémoire allouée au programme pour réaliser le traitement sur la donnée la donnée sera stockée dans le programme dans une variable ==> Opération de lecture 3. Fermer le fichier Pointeur de fichier qui avance à chaque lecture Chaîne lue F. Gayral 12 adieux.txt Fichier sur le disque bonjour salut ciao bye

Lecture d'un fichier texte en C 3 FILE* f; int taille=200 ; char ligne[taille]; f= fopen( "adieux.txt", "rt"); if (f==null) {printf("erreur de fichier"); } else 2 { fgets(ligne,taille,f); while (!feof(f) ) { // traiter ligne printf(ligne) ; fgets(ligne,taille,f); } 1 Ouverture du fichier F. Gayral 13 Teste si l'ouverture s'est bien passée Première lecture avant la boucle de parcours pour voir si le fichier est vide Boucle de parcours Ligne est ce que le dernier fgets a ramené Lecture suivante Fermeture du fichier

3 <?php taille=200 ; Lecture d'un fichier texte en PHP $f = fopen('"adieux.txt', 'r'); if (!$f) {echo "erreur de fichier"; } else { 2 $ligne = fgets($f,taille); while (!feof($f) ) { fclose($f); // traiter ligne echo $ligne $ligne = fgets($f,taille); } 1 Ouverture du fichier F. Gayral 14 Teste si l'ouverture s'est bien passée Première lecture avant la boucle de parcours pour voir si le fichier est vide Boucle de parcours Ligne est ce que la lecture a ramené Lecture suivante Fermeture du fichier

Lecture d'un fichier texte en Java 1 2 BufferedReader bin = null; try { File inputfile = new File("adieux.txt"); bin = new BufferedReader(new FileReader(inputFile)); String s = bin.readline( ); while (s!= null){ System.out.println(s); s = bin.readline();} } catch(ioexception e) { System.out.println(e) ; } finally {if (bin!= null) { try { bin.close(); } } // fin du finally catch(ioexception ec) { System.out.println(ec) ; } }// fin du if 3 F. Gayral 15

Exemple de lecture d'un fichier aux infos plus complexes Fichier ComptesSeuls.data de comptes bancaires toto/c-12345678/120 cardo/u-67541897/120 szulman/u-54676545/1234 peduzzi/y-12097865/670 roy/h-42756894/90 tyty/j-32189638/120 duval/x-23478645/600 martin/p-45122316/3400 Laurt/M-90879075/500 ligne toto/c-12345678/120 Ligne qu'il faut découper pour avoir les caractéristiques du compte toto C-12345678 120 monet/l-78654560/900 F. Gayral 16

Choix d'un format de sauvegarde Pour sauver les données dans un fichier, le programmeur doit choisir leur format de sauvegarde Pour récupérer les données d un fichier, le programmeur doit savoir le format de sauvegarde qui a été utilisé pour les sauver Ici, format : un CompteBancaire par ligne caractéristiques d'un CompteBancaire séparées par un / F. Gayral 17

Lecture d'un fichier texte avec format connu BufferedReader bin = null; try { File inputfile = new File("comptesSeuls.data"); bin = new BufferedReader(new FileReader(inputFile)); String ligne = bin.readline( ); while (ligne!= null) { } } // fin du try catch(ioexception e) { System.out.println(e) ; } finally } String [] infos = ligne.split("/"); On découpe la ligne lue if (infos.length ==3) { En utilisant la méthode for (String s : infos) System.out.println(s); } split de String avec le séparateur : / else System.out.println("erreur dans la ligne "+ligne); qui construit un tableau ligne = bin.readline(); Infos : tableau de String {... F. Gayral 18 ligne : String toto/c-12345678/120 toto C-12345678 120

Lecture d'un fichier texte avec création des objets correspondant BufferedReader bin = null; try { File inputfile = new File("comptesSeuls.data"); bin = new BufferedReader(new FileReader(inputFile)); String ligne = bin.readline( ); while (ligne!= null) { } } // fin du try String [] infos = ligne.split("/"); if (infos.length ==3) { CompteBancaire cb = new CompteBancaire(... ) ;... else System.out.println("erreur dans la ligne "+ligne); ligne = bin.readline(); catch(ioexception e) { System.out.println(e) ; } finally {... F. Gayral 19 ligne : String toto/c-12345678/120 toto C-12345678 120 Infos : tableau de String

Ecriture dans un fichier F. Gayral 20

Utilisation d un fichier en écriture : le fichier n'existe pas ; on veut le créer pour qu'il contienne des données 3 étapes 1. Créer et ouvrir le fichier en écriture 2. Transfert des données une par une de la mémoire vers le fichier sur le disque ==> Opération d'écriture 3. Fermer le fichier adieux.txt Fichier sur le disque F. Gayral 21

Ecriture dans un fichier en C FILE* f; f= fopen ( "essai.txt", "wt" ); if (f==null) {printf("erreur de fichier"); } else { fputs ( "an\n", f); Écriture : fonction fputs fputs ( "tyty\n", f); fputs ( "year\n", f); fclose (f); } F. Gayral 22

Ecriture dans un fichier en PHP $f= fopen ( "essai.txt", "w" ); if (!$f) {printf("erreur de fichier"); } else { fputs ( $f, "an\n"); fputs ( $f, "tyty\n"); fputs ( $f, "year\n"); fclose ($f); } Écriture : fonction fputs F. Gayral 23

Ecriture dans un fichier en Java toutes les opérations d'écriture s'effectuent sur le buffer BufferedWriter bout = null; try { File inputfile = new File("essai.txt"); } bout = new BufferedWriter(new FileWriter(inputFile)) ; bout.write("an\n") ; bout.write("year\n") ; catch(ioexception e) { } finally { System.out.println(e) ; if (bout!= null) } } try {bout.close();} catch(ioexception ec) { System.out.println(ec) ; F. Gayral 24 Fichier créé sur le disque de nom essai.txt La fermeture du dernier fermera les autres en chaîne

Flux textes en Java Les classes appropriées pour l'utilisation des flux se trouvent dans le package java.io J'ai simplifié mais c'est très complexe... deux classes principales (qui sont des classes abstraites) flots de caractères en lecture : java.io.reader flots de caractères en écriture : java.io.writer Avec 2 hiérarchies de classes héritant de ces 2 classes principales qui réalisent des types de flux particuliers beaucoup de classes donc : allez voir les tutoriels pour plus de besoins! F. Gayral 25

Hiérarchie pour les flux de caractères F. Gayral 26

Ecrire des objets et valeurs primitives dans un flux de caractères : utiliser la classe PrintWriter La classe PrintWriter propose des méthodes print( ) qui convertissent leurs arguments en caractères avant de les écrire sur le flux void print(boolean b) void print(char c) Prints a character. void print(double d) void print(float f) void print(int i) void print(long l) void print(string s) void print(object obj) Prints a boolean value. F. Gayral 27

Exemple d'écriture d'objets ou de types de base PrintWriter pout = null; try { } File outputfile = new File("essai.data"); pout = new PrintWriter(new BufferedWriter(new FileWriter(outputFile))) ; double d = -15.78 ; pout.print(d) ; int i=2 ; pout.println("---"+i) ; Point p = new Point(12,60); pout.print(p); catch(filenotfoundexception e) { System.out.println(e) ; } catch(ioexception ex) { System.out.println(ex) ; } finally { if (pout!= null) {pout.close();} } // fin du finally Le printwriter référencé par pout encapsule le flux de sortie fout. Fichier créé sur le disque de nom essaipw.txt -15.78--2 java.awt.point[x=12,y=60] F. Gayral 28

En Java, on «branche» les classes les unes aux autres print( ) (PrintWriter) (BufferedWriter) write( ) (FileWriter) File fichier de sortie Et c'est la dernière qu'on ferme : elle fermera les autres en conséquence D. Bouthinon F. Gayral 29

La classe File F. Gayral 30

La classe File La classe java.io.file permet de parcourir le système de fichiers de n'importe quelle plateforme Une instance de File représente un fichier ou un répertoire A partir de ce chemin, l'objet est capable d'accéder à tous les fichiers et répertoires environnants : File getparentfile(), File[] listfiles() de fournir des informations le concernant String getname(), String getpath()) long length(), boolean exists(), boolean isfile(), boolean isdirectory()... de créer un nouveau fichier (boolean createnewfile()) ou un répertoire (boolean mkdir(), boolean mkdirs()) et d'effacer un fichier ou un répertoire (boolean delete()). F. Gayral 31

Exemples d'utilisation de File Exemple pour se balader dans un programme Java dans l'arborescence des fichiers sur le disque String chemin = "C:/java/projets/exemple1/GestionFichier.class"; File ochemin = new File(chemin); File[] tabfiles = ochemin.getparentfile().listfiles(); for(file f : tabfiles){ System.out.println("Nom du fichier : " + f.getname()); System.out.println("Taille du fichier : " + f.length()); } F. Gayral 32