Cours n° 6 Les flots d’entrées-sorties

Slides:



Advertisements
Présentations similaires
Cours n° 4 Objets, classes, interfaces et héritage
Advertisements

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.
Stockage de données.
Cours n° 2 Les entrées-sorties Biliothèque C++ (iostream) –
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
X. BLANC & J. DANIEL , Le langage Java X. BLANC & J. DANIEL ,
Sérialisation des objets
Le mécanisme des exceptions
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
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.
Programmer en JAVA par Tama
JAV - TD 6 Structures de données JAVA
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
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.
Écouteurs de click d'une fenêtre
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.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Système d’Exploitation
Introduction à la programmation (Java)
Programmation Orienté Objet applications au langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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 Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
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.
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.
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
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.
Cours n° 1 Présentation du langage C++
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
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.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
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.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
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
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
JAVA Les Entrées-sorties
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Fichier et Stream d’Entrée-Sortie IFT1025, Programmation 2 Jian-Yun Nie.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Sockets/rmi - Y. Bekkers1 Applications réparties en Java Paquetage java.net – Sockets Objets distants transparents – RMI Yves Bekkers.
Informatique 2A Langage C 4ème séance
Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture
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:

Cours n° 6 Les flots d’entrées-sorties

1. Flots d’entrées/sorties Sommaire 1. Flots d’entrées/sorties 1.1. Gestion d’un système de fichiers 1.2. Flots d’octets 1.2.1. Flots d’octets en sortie 1.2.2. Flots d’octets en entrée 1.3. Flots texte 1.3.1. Flots texte en sortie 1.3.2. Flots texte en entrée

Normalisation des méthodes de lecture et d’écriture 1. FLOTS D’ENTREES/SORTIES Définition Canaux susceptibles de transmettre de l’information sous forme d’octets Clavier, écran Systèmes de fichiers (disque dur, disquette, distants) Réseau (socket, internet) Périphérique de son et d’image (webcam, microphone, …) Normalisation des méthodes de lecture et d’écriture En Java, deux types de flots Flots d’octets et flots texte en format unicode

Gestion d’un système de fichiers (File) 1. FLOTS D’ENTREES/SORTIES Implémentation en Java Package « Java.io » 10 interfaces, 50 classes, 16 exceptions Gestion d’un système de fichiers (File) Système de représentation d’un chemin Gestion des répertoires et des fichiers création, destruction, test d’existence, permissions Gestion des entrées/sorties binaires (InputStream/OutputStream) Lecture/écriture d’octets, de tableaux d’octets, de types primitifs et d’objets Ajout de tampon, de compression, de tables de transcodage Gestion des entrées/sorties textes (Reader/Writer) Lecture/écriture de textes

Représentation abstraite du chemin d’accès d’un fichier 1.1. GESTION D’UN SYSTEME DE FICHIERS Classe File Représentation abstraite du chemin d’accès d’un fichier Format indépendant du système d’exploitation (windows, unix, …) Méthodes de conversion String getAbsolutePath() URL toURL() Parcours dans l’arborescence File[] ListRoots() systèmes de fichiers accessibles String getParent() File getParentFile() File[] listFiles() Propriétés boolean exists() boolean isDirectory() boolean isFile() long length() long lastModified() boolean canRead() boolean canWrite() boolean isHidden() Création/destruction boolean createNewFile() boolean mkdir() boolean mkdirs() boolean setReadOnly() boolean delete()

GestionFile.java 1.1. GESTION D’UN SYSTEME DE FICHIERS - EXEMPLE Recherche d’un fichier dans une arborescence package cours06; import java.io.*; public class GestionFile { public static File findFirst(File f, String nomFichier) { File fres = null; int i; File[] tf = f.listFiles(); // liste des fichiers du // répertoire for (i = 0;i < tf.length;i++) { fres = tf[i]; if (fres.isDirectory() == true) { fres = findFirst(tf[i], nomFichier); if (fres != null) break; // sortie de boucle } else if (fres.getName().equals(nomFichier) == true) break; // sortie de boucle if (i == tf.length) return null; // fichier non trouvé else return fres; // fichier trouvé

testGestionFile.java Répertoire de recherche : d:/ 1.1. GESTION D’UN SYSTEME DE FICHIERS - EXEMPLE Test de la méthode FindFirst() package cours06; import java.io.*; import util.*; public class testGestionFile { public static void main(String[] args) { String nR = Keyboard.getString("Répertoire de recherche : "); String nF = Keyboard.getString("Fichier à rechercher : "); File fres = GestionFile.findFirst(new File(nR), nF); if (fres != null) { System.out.println("Chemin absolu du fichier : "); System.out.println(fres.getAbsolutePath()); } else System.out.println("Aucune occurrence du fichier..."); Répertoire de recherche : d:/ Fichier à rechercher : Date.java Chemin absolu du fichier : d:\… \cours04\Date.java

ByteArrayOutputStream 1.2.1. FLOTS D’OCTETS EN SORTIE Classe abstraite « OutputStream » Cinq classes dérivées Ecriture dans un fichier d’un octet ou d’un tableau d’octets Ecriture dans un tableau d’octets d’un octet ou d’un tableau d’octets (simulation) Ecriture de types primitifs et d’objets sérialisables dans un flot d’octets Ecriture dans un pipe d’un octet ou d’un tableau d’octets Ajout d’un traitement à un flot d’octets en sortie FileOutputStream ObjectOutputStream PipedOutputStream FilterOutputStream ByteArrayOutputStream OutputStream “interface” ObjectOutput “interface” DataOutput

Classe FileOutputStream 1.2.1. FLOTS D’OCTETS EN SORTIE Classe FileOutputStream Deux constructeurs Ouverture en écriture d’un fichier FileOutputStream(File) FileOutputStream(String) Ecriture d’octets dans un fichier write(byte) Ecriture d’un octet write(byte[]) Ecriture d’un tableau d’octets write(byte[], int, int) Ecriture d’une partie d’un tableau d’octets Fermeture du Fichier void close() ..

Classe ObjectOutputStream 1.2.1. FLOTS D’OCTETS EN SORTIE Classe ObjectOutputStream Un constructeur ObjectOutputStream(OutputStream) OutputStream à choisir parmi {FileOutputStream, ByteArrayOutputStream, PipedOutputStream, FilterOutputStream} Ecriture de types primitifs dans un flot d’octets void writeBoolean(boolean) void writeByte(byte) void writeBytes(String) void writeChar(char) void writeChars(String) void writeUTF(String) void writeShort(short) void writeInt(int) void writeLong(long) void writeFloat(float) void writeDouble(double) Ecriture d’objets sérialisables dans un flot d’octets Objet implémentant l’interface Sérializable ou dont tous les attributs sont des objets sérialisables void writeObject(object)

Date3.java 1.2.1. FLOTS D’OCTETS EN SORTIE – EXEMPLE 1 Ecriture d’un objet dans d’un fichier binaire (1/2) package cours06; import java.io.*; import cours04.Date; public class Date3 extends Date implements Serializable { static final long serialVersionUID = 176; public Date3(int j, int m, int a) {super(j,m,a);} public Date3() {super(0,0,0);} public void Sauvegarder(File f, boolean ajout) { try { FileOutputStream fos = new FileOutputStream(f, ajout); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(this); System.out.println("date sauvegardée"); oos.close(); } catch (IOException e) { e.printStackTrace(); }

testDate3.java Fichier à créer : cours06/FS_Date date sauvegardée … 1.2.1. FLOTS D’OCTETS EN SORTIE – EXEMPLE 1 Ecriture d’un objet dans d’un fichier binaire (2/2) package cours06; import java.io.*;import util.Keyboard; public class testDate3 { public static void main(String[] args) { File f = new File(Keyboard.getString("Fichier à créer : ")); Date3 today = new Date3(10, 11, 2005); Date3 fête = new Date3(14, 7, 2006); while (today.CompareTo(fête) == true) { today.Incrementer(); today.Sauvegarder(f, true); } Fichier à créer : cours06/FS_Date date sauvegardée …

BufferedOutputStream DeflaterOutputStream 1.2.1. FLOTS D’OCTETS EN SORTIE Arborescence de la classe « FilterOutputStream » Sept classes dérivées Ajout d’un tampon Ajout d’un détecteur d’intégrité Ajout d’une méthode de traitement Ecriture des types primitifs Ajout d’un compresseur Ajout d’un message Ajout d’un transcodage BufferedOutputStream CheckedOutputStream CipherOutputStream FilterOutputStream DataOutputStream DeflaterOutputStream DigestOutputStream PrintStream

Ecriture dans d’un fichier binaire compressé 1.2.1. FLOTS D’OCTETS EN SORTIE – EXEMPLE 2 testEcrZip.java Ecriture dans d’un fichier binaire compressé package cours06; import java.io.*; import java.util.zip.*; import util.Keyboard; public class testEcrZip { public static void main(String[] args) { try { File f = new File(Keyboard.getString("Nom du fichier compressé : ")); FileOutputStream fos = new FileOutputStream(f); DeflaterOutputStream dos = new DeflaterOutputStream(fos); DataOutputStream fdos = new DataOutputStream(dos); fdos.writeUTF("Le président de la Serbie-Monténégro s'excuse pour la guerre en Bosnie."); fdos.writeUTF("Le Monde"); fdos.close(); System.out.println("Fin d'écriture de fichier"); } catch (IOException e) { e.printStackTrace(); } Nom du fichier compressé :cours06/S_Zip Fin d'écriture de fichier

ByteArrayInputStream 1.2.2. FLOTS D’OCTETS EN ENTREE Classe abstraite « InputStream » Sept classes dérivées Lecture d’un octet ou d’un tableau d’octets d’un fichier Lecture à partir d’un tableau d’octets (simulation) Lecture de types primitifs et d’objets sérialisables Lecteur dans un pipe Ajout d’un traitement à un flot en entrée d’octets Lecture sur une entrée audio Concaténation de flots d’entrée FileInputStream ByteArrayInputStream ObjectInputStream InputStream PipedInputStream “interface” ObjectIntput FilterInputStream AudioInputStream “interface” DataIntput SequenceInputStream

testLctZip.java 1.2.2. FLOTS D’OCTETS EN ENTREE – EXEMPLE 2 Lecture d’un fichier compressé package cours06; import java.io.*; import java.util.zip.*; import util.Keyboard; public class testLctZip { public static void main(String[] args) { String d; try { File f = new File(Keyboard.getString("Nom du fichier compressé : ")); FileInputStream fis = new FileInputStream(f); InflaterInputStream is = new InflaterInputStream(fis); DataInputStream idis = new DataInputStream(is); while ((d=idis.readUTF()) != null){ System.out.println(d); } idis.close(); catch (EOFException e) { System.out.println("Fin de lecture de fichier"); } catch (IOException e) { e.printStackTrace(); }

Exécutions de testLctZip testLctZip.java 1.2.2. FLOTS D’OCTETS EN ENTREE – EXEMPLE 2 Lecture d’un fichier compressé Exécutions de testLctZip Nom du fichier compressé : cours06/S_Zip Le président de la Serbie-Monténégro s'excuse pour la guerre en Bosnie. Le Monde Fin de lecture de fichier

Sept classes dérivées BufferedWriter CharArrayWriter FilterWriter 1.3.1. FLOTS TEXTE EN SORTIE Classe abstraite « Writer » Sept classes dérivées Ecriture avec un tampon Ecriture dans un tableau de caractères Ajout d’un traitement à un flot texte en sortie Pont vers un flot d’octets en sortie (e.g. FileWriter) Ecriture dans un pipe Ecriture formatée de types primitifs et d’objets sérialisables Ecriture dans un String BufferedWriter CharArrayWriter FilterWriter Writer OutputStreamWriter PipedWriter PrintWriter StringWriter

Quatre constructeurs de base 1.3.1. FLOTS TEXTE EN SORTIE - EXEMPLE Classe « PrintWriter » Quatre constructeurs de base PrintWriter(File file) à partir d’un fichier PrintWriter(String fileName) à partir d’un nom de fichier PrintWriter(OutputStream out) à choisir parmi {  FileOutputStream, ByteArrayOutputStream, PipedOutputStream, FilterOutputStream} PrintWriter(Writer out) à choisir parmi { Buffered Writer,  CharArrayWriter, PipedWriter, StringWriter }   Deux constructeurs avec transfert possible en fin de ligne PrintWriter(OutputStream out, boolean autoFlush) PrintWriter(Writer out , boolean autoFlush) Deux constructeurs avec choix du jeu de caractères PrintWriter(File file, String  charset) PrintWriter(String fileName, String charset)           

Ecriture formatée dans un flot texte 1.3.1. FLOTS TEXTE EN SORTIE - EXEMPLE Classe « PrintWriter » Ecriture formatée dans un flot texte void print (boolean b) void print(char c) void print(char[] s) void print(double d) void print(float f) void print(int i) print(long l) void print(String s) void print(Object obj) Ecriture formatée avec passage à la ligne dans un flot texte void println (boolean b) void println(char c) void println(char[] s) void println(double d) void println(float f) void println(int i) println(long l) void println(String s) void println(Object obj)

testEctTxt.java Fichier FS_Txt : Hello, you... 1.3.1. FLOTS TEXTE EN SORTIE - EXEMPLE Ecriture d’un fichier texte public class testEcrTxt { public static void main(String[] args) { String ligne; try { File f = new File(Keyboard.getString("Nom du fichier à écrire : ")); PrintWriter pr = new PrintWriter(f); pr.print("Hello, "); pr.println("you..."); pr.close(); System.out.println("Fin d'écriture fichier"); } catch (IOException e) { e.printStackTrace(); } Fichier FS_Txt : Hello, you... Nom du fichier à écrire : cours06/FS_Txt Fin d'écriture fichier

Six classes dérivées BufferedReader CharArrayReader FilterReader 1.3.2. FLOTS TEXTE EN ENTREE Classe abstraite « Reader » Six classes dérivées Lecture avec un tampon Lecture à partir d’un tableau de caractères Ajout d’un traitement à un flot texte en entrée Pont vers un flot d’octets en entrée (e.g., FileReader) Lecture à partir d’un pipe Lecture à partir d’un String BufferedReader CharArrayReader FilterReader Reader InputStreamReader PipedReader StringReader

KeyboardSecure.java Lecture-clavier robuste 1.3. 2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture-clavier robuste package util; import java.io.*; /** * Bibliothèque des entrées sécurisées clavier * Lecture robuste des variables de type natif * (byte, short, int, float, double, char) * et de variables de type String * Toutes les méthodes sont des méthodes de classe */ public class KeyboardSecure { * Lecture d'une ligne saisie au clavier * @return La chaîne de caractères saisie au clavier private static String getLine() { String ligne_lue = null; try { InputStreamReader lecteur = new InputStreamReader(System.in); BufferedReader entree = new BufferedReader(lecteur); ligne_lue = entree.readLine(); } catch (IOException e) { System.exit(0); } return ligne_lue;

KeyboardSecure.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture-clavier robuste /** * Lecture d’une chaîne de caractères saisie au clavier * @param mess Message d'invite d’entrée au clavier * @return La chaîne lue au clavier */ public static String getString(String mess) { System.out.print(mess); return getLine(); } * Lecture d'un caractère saisi au clavier * @param mess Message d'invite à entrer un caractère au clavier * @return Le caractère lu au clavier public static char getChar(String mess) { return getLine().charAt(0);

KeyboardSecure.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture-clavier robuste /** * Lecture robuste d'un int saisi au clavier * @param messMessage d'invite à entrer un int au clavier * @returnL'int lu au clavier */ public static int getInt(String mess) { System.out.print(mess); int entier=Integer.MIN_VALUE; while (true) { try { entier = Integer.parseInt(getLine()); break; } catch (NumberFormatException e){ System.out.println("Erreur de format..."); } return entier; Squelette identique pour getByte, getShort, getFloat, getDouble (cf. KeyboardSecure.java)

LectureRobuste.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture-clavier robuste package cours06; import util.*; /** Driver de test de la bibliothèque KeyboardSecure */ public class LectureRobuste { public static void main(String[] args) { String ligne = KeyboardSecure.getString("Lecture d'une ligne : "); System.out.println("Ligne lue au clavier : " + ligne); char caractere = KeyboardSecure.getChar("Lecture d'un caractère : "); System.out.println("Caractère lu au clavier : " + caractere); int entier = KeyboardSecure.getInt("Entier : "); System.out.println("Entier lu au clavier : " + entier); float flottant = KeyboardSecure.getFloat("Flottant : "); System.out.println("Flottant lu au clavier : " + flottant); }

Exécutions de LectureRobuste LectureRobuste.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture-clavier robuste Exécutions de LectureRobuste Lecture d'une ligne : Driver de test de KeyboardSecure Ligne lue au clavier : Driver de test de KeyboardSecure Lecture d'un caractère : azerty Caractère lu au clavier : a Entier : deux Erreur de format... Entier : 34.5 Entier : 345 Entier lu au clavier : 345 Flottant : pi Flottant : 3.14 Flottant lu au clavier : 3.14 Formats d’entrée des réels (float, double) : 3 3.0 3f 3.0 314e-2 3.14 314E-2 3.14

Lecture de caractères dans un flot texte 1.3.2. FLOTS TEXTE EN ENTREE Classe « BufferedReader » Deux constructeurs BufferedReader(Reader) BufferedReader(Reader, int) Reader à choisir parmi {CharArrayReader, FileReader, PipedReader, StringReader} Lecture de caractères dans un flot texte int read() Lecture d’un caractère int read(char[], int, int) Lecture de caractères et stockage dans un tableau String readLine() Lecture d’une ligne de textes long skip(long n) sauter n caractèresc

tstLctTxt.java Nom du fichier à lire : cours06/FS_Date 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 1 Lecture d’un fichier texte package util; import java.io.*; public class tstLctTxt { public static void main(String[] args) { String ligne; try { File f = new File(Keyboard.getString("Nom du fichier à lire : ")); FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); while ((ligne=br.readLine()) != null) { System.out.println(ligne); } br.close(); catch (IOException e) { e.printStackTrace(); } Nom du fichier à lire : cours06/FS_Date xœcðòIU((:¼²83%5¯D!%U!'Q!8µ()3U×7?¯äðʼÃ+Ó‹òŠÕS+’K‹?ªóK‹@ŠÒKS‹ŠRRóœò‹ó2Sõ8€fõ¤¤

tstLctTxt.java Nom du fichier à lire : cours06/testDate3.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 2 Lecture d’un fichier texte Nom du fichier à lire : cours06/testDate3.java package cours06; import java.io.*; import util.Keyboard; public class testDate3 { public static void main(String[] args) { File f = new File(Keyboard.getString("Nom du fichier à créer :")); Date3 today = new Date3(10, 11, 2005); Date3 fête = new Date3(14, 7, 2006); while (today.CompareTo(fête) == true) { today.Incrementer(); today.Sauvegarder(f, true); System.out.println("date sauvegardée"); }

testLctTxtFmt.java Lecture d’un fichier texte formaté 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 3 Lecture d’un fichier texte formaté package cours06; import java.io.*; import util.Keyboard; public class testLctTxtFmt { public static void main(String[] args) { String ligne; try { File f = new File(Keyboard.getString("Nom du fichier à lire : ")); FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); while ((ligne=br.readLine()) != null) { StringTokenizer st = new StringTokenizer(ligne, "[;\n\t]"); while (st.hasMoreTokens()) System.out.print(st.nextToken()); System.out.print("\n"); } br.close(); catch (IOException e) { e.printStackTrace(); }

Exécution de testLctTxtFmt testLctTxtFmt.java 1.3.2. FLOTS TEXTE EN ENTREE – EXEMPLE 3 Lecture d’un fichier texte formaté Exécution de testLctTxtFmt Fichier formaté TestToken : [14; 7; 1789] [11; 11; 1918] [8; 5; 1945] Nom du fichier à lire : TestToken 14 7 1789 11 11 1918 8 5 1945