Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de...

33
Java : les fichiers Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en Programmation par contrainte (IA) Ing ´ enieur en G ´ enie logiciel [email protected] H & H: Research and Training 1 / 17

Transcript of Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de...

Page 1: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

Java : les fichiers

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en Programmation par contrainte (IA)

Ingenieur en Genie logiciel

[email protected]

H & H: Research and Training 1 / 17

Page 2: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

Plan

1 Introduction

2 Ecriture

3 Lecture

H & H: Research and Training 2 / 17

Page 3: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Introduction

Les fichiers

Les fichiers

outil utilise pour stocker et/ou echanger les donnees

Pouvant etre en ecriture ou en lecture

3 etapes pour la manipulation de fichiers en Java

Creation ou ouverture

Utilisation : ecriture ou lecture

Fermeture

H & H: Research and Training 3 / 17

Page 4: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Introduction

Les fichiers

Les fichiers

outil utilise pour stocker et/ou echanger les donnees

Pouvant etre en ecriture ou en lecture

3 etapes pour la manipulation de fichiers en Java

Creation ou ouverture

Utilisation : ecriture ou lecture

Fermeture

H & H: Research and Training 3 / 17

Page 5: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Deux etapes pour la creation d’un fichier en Java

Creation logique (declaration d’un objet)

Creation physique (creation sur le disque) ou ouverture si existant

Creation logique

File file = new File("fichier.txt");

Tous les imports de ce chapitre sont de java.io.*;

H & H: Research and Training 4 / 17

Page 6: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Deux etapes pour la creation d’un fichier en Java

Creation logique (declaration d’un objet)

Creation physique (creation sur le disque) ou ouverture si existant

Creation logique

File file = new File("fichier.txt");

Tous les imports de ce chapitre sont de java.io.*;

H & H: Research and Training 4 / 17

Page 7: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Pour creer le fichier physiquement, il faut preciser le type d’utilisation

lecture, ou

ecriture

Creation physique d’un fichier pour ecriture

FileWriter fw = new FileWriter(file);

Remarque

Executer le projet puis aller verifier la presence d’un fichierfichier.txt dans le projet (Rafraichir le projet si le fichier n’apparaıtpas)

H & H: Research and Training 5 / 17

Page 8: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Pour creer le fichier physiquement, il faut preciser le type d’utilisation

lecture, ou

ecriture

Creation physique d’un fichier pour ecriture

FileWriter fw = new FileWriter(file);

Remarque

Executer le projet puis aller verifier la presence d’un fichierfichier.txt dans le projet (Rafraichir le projet si le fichier n’apparaıtpas)

H & H: Research and Training 5 / 17

Page 9: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersOn peut fusionner les deux etapes precedentes

FileWriter fw = new FileWriter("fichier.txt");

Remarque

On peut aussi ajouter un deuxieme parametre booleen qui prend lavaleur

true : ecrire a la suite si le fichier existe

false (par defaut) : ecraser le contenu precedent si le fichierexiste

Exemple

FileWriter fw = new FileWriter("fichier.txt",true);

H & H: Research and Training 6 / 17

Page 10: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersOn peut fusionner les deux etapes precedentes

FileWriter fw = new FileWriter("fichier.txt");

Remarque

On peut aussi ajouter un deuxieme parametre booleen qui prend lavaleur

true : ecrire a la suite si le fichier existe

false (par defaut) : ecraser le contenu precedent si le fichierexiste

Exemple

FileWriter fw = new FileWriter("fichier.txt",true);

H & H: Research and Training 6 / 17

Page 11: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersOn peut fusionner les deux etapes precedentes

FileWriter fw = new FileWriter("fichier.txt");

Remarque

On peut aussi ajouter un deuxieme parametre booleen qui prend lavaleur

true : ecrire a la suite si le fichier existe

false (par defaut) : ecraser le contenu precedent si le fichierexiste

Exemple

FileWriter fw = new FileWriter("fichier.txt",true);

H & H: Research and Training 6 / 17

Page 12: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersPour ecrire dans un fichier

// pour ecrire une chaıne de caracterefw.write("Hello world");

// pour ecrire un entierfw.write(86);

// pour ecrire un caracterefw.write(’a’);

fw.close();// fermer le flux

Allons verifier ce qui a ete ecrit

Hello worldVa

Que s’est-il passe pour l’entier 86?

L’ajout d’un entier correspond a l’ajout du caractere correspondant aucode ASCII egal a cet entier.

H & H: Research and Training 7 / 17

Page 13: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersPour ecrire dans un fichier

// pour ecrire une chaıne de caracterefw.write("Hello world");

// pour ecrire un entierfw.write(86);

// pour ecrire un caracterefw.write(’a’);

fw.close();// fermer le flux

Allons verifier ce qui a ete ecrit

Hello worldVa

Que s’est-il passe pour l’entier 86?

L’ajout d’un entier correspond a l’ajout du caractere correspondant aucode ASCII egal a cet entier.

H & H: Research and Training 7 / 17

Page 14: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiersPour ecrire dans un fichier

// pour ecrire une chaıne de caracterefw.write("Hello world");

// pour ecrire un entierfw.write(86);

// pour ecrire un caracterefw.write(’a’);

fw.close();// fermer le flux

Allons verifier ce qui a ete ecrit

Hello worldVa

Que s’est-il passe pour l’entier 86?

L’ajout d’un entier correspond a l’ajout du caractere correspondant aucode ASCII egal a cet entier.

H & H: Research and Training 7 / 17

Page 15: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Pour ecrire a la ligne (mais ce n’est pas pratique)

fw.write("Hello world\n");fw.write(’a’);fw.close();// fermer le flux

Contenu du fichier

Hello worlda

H & H: Research and Training 8 / 17

Page 16: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

Pour ecrire a la ligne (mais ce n’est pas pratique)

fw.write("Hello world\n");fw.write(’a’);fw.close();// fermer le flux

Contenu du fichier

Hello worlda

H & H: Research and Training 8 / 17

Page 17: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

On peut aussi utiliser un objet de la classe BufferedWriter

BufferedWriter bw = new BufferedWriter(fw);

Pour ecrire

bw.write("Hello world");bw.newLine();bw.write(87);bw.newLine();bw.write(’a’);bw.close();// fermer le flux

H & H: Research and Training 9 / 17

Page 18: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

On peut aussi utiliser un objet de la classe BufferedWriter

BufferedWriter bw = new BufferedWriter(fw);

Pour ecrire

bw.write("Hello world");bw.newLine();bw.write(87);bw.newLine();bw.write(’a’);bw.close();// fermer le flux

H & H: Research and Training 9 / 17

Page 19: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Ecriture

Les fichiers

BufferedWriter vs FileWriter

FileWriter ecrit directement dans le fichier caractere parcaractere

BufferedWriter ecrit dans un buffer puis envoie tout dans lefichier quand on appelle la methode flush ou close

H & H: Research and Training 10 / 17

Page 20: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Creation physique d’un fichier pour lecture

FileReader fr = new FileReader(file);

On peut aussi fusionner les deux etapes de creation

FileReader fr = new FileReader("fichier.txt");

H & H: Research and Training 11 / 17

Page 21: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Creation physique d’un fichier pour lecture

FileReader fr = new FileReader(file);

On peut aussi fusionner les deux etapes de creation

FileReader fr = new FileReader("fichier.txt");

H & H: Research and Training 11 / 17

Page 22: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire un caractere d’un fichier

int str = fr.read();

Affichons ce qu’on a lu

System.out.println(str);// affiche le code ASCII du caractere lu

Pour afficher le caractere associe au code ASCII lu

System.out.println((char)str);// affiche le caractere lu

H & H: Research and Training 12 / 17

Page 23: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire un caractere d’un fichier

int str = fr.read();

Affichons ce qu’on a lu

System.out.println(str);// affiche le code ASCII du caractere lu

Pour afficher le caractere associe au code ASCII lu

System.out.println((char)str);// affiche le caractere lu

H & H: Research and Training 12 / 17

Page 24: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire un caractere d’un fichier

int str = fr.read();

Affichons ce qu’on a lu

System.out.println(str);// affiche le code ASCII du caractere lu

Pour afficher le caractere associe au code ASCII lu

System.out.println((char)str);// affiche le caractere lu

H & H: Research and Training 12 / 17

Page 25: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire et afficher tout le contenu du fichier

int str = fr.read();while (str != -1) {

System.out.println((char)str);// affiche tous les caracteres lusstr = fr.read();

}

Ou en plus simple

while ((str = fr.read()) != -1)System.out.println(str);// affiche tous les caracteres lus

H & H: Research and Training 13 / 17

Page 26: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire et afficher tout le contenu du fichier

int str = fr.read();while (str != -1) {

System.out.println((char)str);// affiche tous les caracteres lusstr = fr.read();

}

Ou en plus simple

while ((str = fr.read()) != -1)System.out.println(str);// affiche tous les caracteres lus

H & H: Research and Training 13 / 17

Page 27: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Remarque

Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autreobjet : BufferedReader

Pour instancier BufferedReader

BufferedReader bufferedReader = new BufferedReader(fr);

Pour lire et afficher une ligne

String string = bufferedReader.readLine();System.out.println(string);

H & H: Research and Training 14 / 17

Page 28: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Remarque

Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autreobjet : BufferedReader

Pour instancier BufferedReader

BufferedReader bufferedReader = new BufferedReader(fr);

Pour lire et afficher une ligne

String string = bufferedReader.readLine();System.out.println(string);

H & H: Research and Training 14 / 17

Page 29: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Remarque

Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autreobjet : BufferedReader

Pour instancier BufferedReader

BufferedReader bufferedReader = new BufferedReader(fr);

Pour lire et afficher une ligne

String string = bufferedReader.readLine();System.out.println(string);

H & H: Research and Training 14 / 17

Page 30: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire et afficher toutes les lignes

String string = bufferedReader.readLine();while (string != null) {

System.out.println(string);string = bufferedReader.readLine();

}

Ou en plus simple

String string ;while ((string = bufferedReader.readLine()) != null)

System.out.println(string);

H & H: Research and Training 15 / 17

Page 31: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Pour lire et afficher toutes les lignes

String string = bufferedReader.readLine();while (string != null) {

System.out.println(string);string = bufferedReader.readLine();

}

Ou en plus simple

String string ;while ((string = bufferedReader.readLine()) != null)

System.out.println(string);

H & H: Research and Training 15 / 17

Page 32: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

On peut toujours lire caractere par caractere

int i = bufferedReader.read();System.out.println(i);// affiche le code ASCIISystem.out.println((char)i);// affiche le caractere lu

H & H: Research and Training 16 / 17

Page 33: Java : les fichiers · 2020. 7. 26. · Java: les fichiers Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur

c© Achref EL MOUELHI c©

Lecture

Les fichiers

Remarque

Quel que soit l’objet de lecture et/ou ecriture utilise, il faut penser a lefermer apres utilisation.

H & H: Research and Training 17 / 17