Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAncell Fortin Modifié depuis plus de 10 années
1
1212 Entrée et sortie de fichiers
2
12-2 Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console • Lire et écrire des fichiers texte • Lire et écrire des fichiers de données • Dresser la liste du contenu d’un répertoire À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console • Lire et écrire des fichiers texte • Lire et écrire des fichiers de données • Dresser la liste du contenu d’un répertoire
3
12-3 Vue d’ensemble LectureLecture ÉcritureÉcriture FichierFichier NomNom ConsoleConsole
4
12-4 Principes de base : sortie standard Présentation de System.out.println() • Il n’existe pas de package System avec une classe dénommée out et une méthode println(). • System est une classe. • System a une variable d’instance statique dénommée out. • out représente une autre classe. • out est un objet PrintStream. Présentation de System.out.println() • Il n’existe pas de package System avec une classe dénommée out et une méthode println(). • System est une classe. • System a une variable d’instance statique dénommée out. • out représente une autre classe. • out est un objet PrintStream.
5
12-5 À propos de l'abstraction de flux • Tout ce qui est lu ou écrit est un flux. • Exemples de flux : –Console –Fichier –Canaux de transmission –Réseau –Mémoire • Ce qui peut être lu ou écrit : –Caractères –Objets Java –Sons, images, etc. • Tout ce qui est lu ou écrit est un flux. • Exemples de flux : –Console –Fichier –Canaux de transmission –Réseau –Mémoire • Ce qui peut être lu ou écrit : –Caractères –Objets Java –Sons, images, etc.
6
12-6 Complément d’information sur out • out est un objet PrintStream qui permet de : –écrire des données sous un format lisible –convertir des caractères (stockés en Unicode) en octets, en fonction des paramètres d’encodage de caractères par défaut de la plate-forme –terminer une ligne –purger le flux • PrintStream n'est pas optimisé dans Java 1.1 ! • out est un objet PrintStream qui permet de : –écrire des données sous un format lisible –convertir des caractères (stockés en Unicode) en octets, en fonction des paramètres d’encodage de caractères par défaut de la plate-forme –terminer une ligne –purger le flux • PrintStream n'est pas optimisé dans Java 1.1 !
7
12-7 Principes de base : entrée standard • L'entrée standard est représentée par System.in. • in est un objet InputStream qui confère une capacité de lecture restreinte par la méthode read(). • in ne vous permet pas de : – lire une ligne à la fois – lire des primitives de Java, comme double • in vous permet de mettre votre système en « pause ». try {System.in.read();} catch... • L'entrée standard est représentée par System.in. • in est un objet InputStream qui confère une capacité de lecture restreinte par la méthode read(). • in ne vous permet pas de : – lire une ligne à la fois – lire des primitives de Java, comme double • in vous permet de mettre votre système en « pause ». try {System.in.read();} catch...
8
12-8 Principes de base : lecture d’une ligne • Si vous souhaitez lire une ligne complète saisie sur la console, vous devez enrouler System.in. • Enroulage par InputStreamReader, BufferedReader • Si vous souhaitez lire une ligne complète saisie sur la console, vous devez enrouler System.in. • Enroulage par InputStreamReader, BufferedReader public class Application1 { public static void main(String[] args) { BufferedReader in = new BufferedReader (new InputStreamReader(System.in)); String s; try { while((s = in.readLine()).length() != 0) System.out.println(s); } catch(IOException e) {} }}
9
12-9 Lecture d’un fichier texte • Enroulage de la représentation String d'un nom de fichier par FileReader • Exemple : String s2 présente le contenu complet des fichiers • Enroulage de la représentation String d'un nom de fichier par FileReader • Exemple : String s2 présente le contenu complet des fichiers public class Application1 { public static void main(String[] args) { try{ BufferedReader in = new BufferedReader( new FileReader(args[0])); String s, s2 = new String(); while((s = in.readLine())!= null) s2 += s + "\n"; in.close(); } catch {}; }}
10
12-10 Écriture d’un fichier texte • Utilisez FileWriter • Enroulez avec BufferedWriter • Enroulez avec PrintWriter • Exemple : supposons que String s2 contient les données texte • Utilisez FileWriter • Enroulez avec BufferedWriter • Enroulez avec PrintWriter • Exemple : supposons que String s2 contient les données texte public class Application1 { public static void main(String[] args) { PrintWriter out1 = new PrintWriter( new BufferedWriter( new FileWriter(”Outputfile.out"))); out1.println(s2); }}
11
12-11 Écriture d’un fichier de données • Utilisez FileOutputStream • Enroulez avec BufferedOutputStream • Enroulez avec DataOutputStream • Exemple : écriture de la valeur de e • Utilisez FileOutputStream • Enroulez avec BufferedOutputStream • Enroulez avec DataOutputStream • Exemple : écriture de la valeur de e public class Application1 { public static void main(String[] args) { DataOutputStream out2 = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("Data.out"))); out2.writeDouble(2.7182818); out2.close(); }}
12
12-12 Lecture d’un fichier de données • Utilisez FileInputStream • Enroulez avec BufferedInputStream • Enroulez avec DataInputStream • Exemple : lecture de la valeur écrite précédemment • Utilisez FileInputStream • Enroulez avec BufferedInputStream • Enroulez avec DataInputStream • Exemple : lecture de la valeur écrite précédemment public class Application1 { public static void main(String[] args) { DataInputStream in5 = new DataInputStream( new BufferedInputStream( new FileInputStream("Data.out"))); System.out.println(in5.readDouble());}}
13
12-13 FilterInputStream et FilterOutputStream • FilterInputStream correspond à l'entrée. • FilterOutputStream correspond à la sortie. • Tous deux assurent un mécanisme qui permet de « filtrer » le flux. • Types de filtres possibles : –Données formatées (Java double, int, etc.) –Buffer de données –Numéros de lignes • Tous deux sont sous-classés par différentes classes afin d’assurer ces fonctionnalités. • FilterInputStream ne peut pas être instancié directement. • FilterInputStream correspond à l'entrée. • FilterOutputStream correspond à la sortie. • Tous deux assurent un mécanisme qui permet de « filtrer » le flux. • Types de filtres possibles : –Données formatées (Java double, int, etc.) –Buffer de données –Numéros de lignes • Tous deux sont sous-classés par différentes classes afin d’assurer ces fonctionnalités. • FilterInputStream ne peut pas être instancié directement.
14
12-14 Accès direct aux fichiers • Les fichiers sont normalement lus et écrits de manière séquentielle. • Il est parfois utile d’accéder directement à certaines sections de fichier. • La classe RandomAccessFile vous permet de : –vous positionner à n’importe quel point dans un fichier –écrire des données à cette position (les données existantes sont « décalées » pour faire de la place). • Une position se spécifie en octets. • Les fichiers sont normalement lus et écrits de manière séquentielle. • Il est parfois utile d’accéder directement à certaines sections de fichier. • La classe RandomAccessFile vous permet de : –vous positionner à n’importe quel point dans un fichier –écrire des données à cette position (les données existantes sont « décalées » pour faire de la place). • Une position se spécifie en octets.
15
12-15 Exemple d’accès direct public class randomAccess { public static void main(String args[]) throws IOException { RandomAccessFile rf = new RandomAccessFile("test.dat", "rw"); for(int i = 0; i < 10; i++) rf.writeDouble(i*3.14); rf.close(); … rf = new RandomAccessFile("test.dat", "rw"); rf.seek(5*8); // go the fifth position rf.writeDouble(2.71828); rf.close(); }}
16
12-16 La classe File • La classe File est utilisée pour représenter le nom d’un fichier ou d’un ensemble de fichiers (répertoire) : File f1 = new File("/"); // root File f2 = new File("/", "etc/passwd"); File f3 = new File("config.sys"); • Vous pouvez obtenir certains attributs du fichier : –s’il existe, s’il peut être lu ou écrit –la date de sa dernière modification, sa taille • Vous pouvez créer et supprimer des fichiers. • La classe File est utilisée pour représenter le nom d’un fichier ou d’un ensemble de fichiers (répertoire) : File f1 = new File("/"); // root File f2 = new File("/", "etc/passwd"); File f3 = new File("config.sys"); • Vous pouvez obtenir certains attributs du fichier : –s’il existe, s’il peut être lu ou écrit –la date de sa dernière modification, sa taille • Vous pouvez créer et supprimer des fichiers.
17
12-17 Liste des fichiers dans un répertoire • La méthode list () dans un objet File renvoie la liste des noms de fichiers lorsque l’objet consiste en un répertoire. • L’interface FileNameFilter permet de récupérer un sous-ensemble de fichiers. • Pour obtenir un sous-ensemble : –Passez un objet implémentant l’interface FileNameFilter vers la méthode list (). –La méthode accept () in FileNameFilter doit être achevée pour l'implémentation. –La méthode prend le nom du répertoire et String comme clause. • La méthode list () dans un objet File renvoie la liste des noms de fichiers lorsque l’objet consiste en un répertoire. • L’interface FileNameFilter permet de récupérer un sous-ensemble de fichiers. • Pour obtenir un sous-ensemble : –Passez un objet implémentant l’interface FileNameFilter vers la méthode list (). –La méthode accept () in FileNameFilter doit être achevée pour l'implémentation. –La méthode prend le nom du répertoire et String comme clause.
18
12-18 Exemple // Directory of.html files in root directory class onlyHtml { public static void main(String args[]) { String dirname = ”” + File.separatorChar; File f1 = new File(dirname); FilenameFilter smaller = new Only(); String s[] = f1.list(smaller); for (int i=0; i < s.length; i++) { System.out.println(s[i]); }}} public class Only implements FilenameFilter { public boolean accept(File dir, String name) { return name.endsWith(“.html”); }}
19
12-19 Résumé Durant ce cours, vous devriez avoir appris à : • utiliser System.in et System.out • utiliser des objets Reader et Writer • utiliser des objets DataInputStream et DataOuputStream • utiliser l’interface FilenameFilter pour dresser une liste sélective des fichiers d’un répertoire Durant ce cours, vous devriez avoir appris à : • utiliser System.in et System.out • utiliser des objets Reader et Writer • utiliser des objets DataInputStream et DataOuputStream • utiliser l’interface FilenameFilter pour dresser une liste sélective des fichiers d’un répertoire
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.