Vous êtes sur la page 1sur 33

Java : les fichiers

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en Programmation par contrainte (IA)
Ingénieur en Génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 17


Plan

1 Introduction

2 Écriture

3 Lecture

H & H: Research and Training 2 / 17


Introduction

Les fichiers

Les fichiers
outil utilisé pour stocker et/ou échanger les données

I c

Pouvant être en écriture ou en lecture
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 3 / 17


Introduction

Les fichiers

Les fichiers
outil utilisé pour stocker et/ou échanger les données

I c

Pouvant être en écriture ou en lecture
ELH
U
L MO
f E
re de fichiers en Java
h
3 étapes pour la manipulation
c
couAouverture
Création
Utilisation : écriture ou lecture
Fermeture

H & H: Research and Training 3 / 17


Écriture

Les fichiers

Deux étapes pour la création d’un fichier en Java

Création logique (déclaration d’un objet)


I c

ELH
Création physique (création sur le disque) ou ouverture si existant
U
L MO
f E
chre
c A

H & H: Research and Training 4 / 17


Écriture

Les fichiers

Deux étapes pour la création d’un fichier en Java

Création logique (déclaration d’un objet)


I c

ELH
Création physique (création sur le disque) ou ouverture si existant
U
L MO
f E
A c
Création logique hre
c
= new File("fichier.txt");
File file

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

H & H: Research and Training 4 / 17


Écriture

Les fichiers

Pour créer le fichier physiquement, il faut préciser le type d’utilisation


lecture, ou
écriture
I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 5 / 17


Écriture

Les fichiers

Pour créer le fichier physiquement, il faut préciser le type d’utilisation


lecture, ou
écriture
I c

ELH
U
L MO
f E
Création physique d’un fichier pour écriture
chre
c A
FileWriter fw = new FileWriter(file);

Remarque
Exécuter le projet puis aller vérifier la présence d’un fichier
fichier.txt dans le projet (Rafraichir le projet si le fichier n’apparaı̂t
pas)
H & H: Research and Training 5 / 17
Écriture

Les fichiers
On peut fusionner les deux étapes précédentes
FileWriter fw = new FileWriter("fichier.txt");

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 6 / 17


Écriture

Les fichiers
On peut fusionner les deux étapes précédentes
FileWriter fw = new FileWriter("fichier.txt");

I c
Remarque
EL H
U
Oètre booléen qui prend la
On peut aussi ajouter un deuxième param
L M
valeur
h r e fE
A
true : écrire àcla suite si le fichier existe
c
false (par défaut) : écraser le contenu précédent si le fichier
existe

H & H: Research and Training 6 / 17


Écriture

Les fichiers
On peut fusionner les deux étapes précédentes
FileWriter fw = new FileWriter("fichier.txt");

I c
Remarque
EL H
U
Oètre booléen qui prend la
On peut aussi ajouter un deuxième param
L M
valeur
h r e fE
A
true : écrire àcla suite si le fichier existe
c
false (par défaut) : écraser le contenu précédent si le fichier
existe

Exemple
FileWriter fw = new FileWriter("fichier.txt",true);
H & H: Research and Training 6 / 17
Écriture

Les fichiers
Pour écrire dans un fichier
// pour écrire une chaı̂ne de caractère
fw.write("Hello world");

// pour écrire un entier


I c

fw.write(86);
ELH
U
L
// pour écrire un caractèreMO
fw.write(’a’);
h r e fE
A c
c
fw.close();
// fermer le flux

H & H: Research and Training 7 / 17


Écriture

Les fichiers
Pour écrire dans un fichier
// pour écrire une chaı̂ne de caractère
fw.write("Hello world");

// pour écrire un entier


I c

fw.write(86);
ELH
U
L
// pour écrire un caractèreMO
fw.write(’a’);
h r e fE
A c
c
fw.close();
// fermer le flux

Allons vérifier ce qui a été écrit


Hello worldVa
H & H: Research and Training 7 / 17
Écriture

Les fichiers
Pour écrire dans un fichier
// pour écrire une chaı̂ne de caractère
fw.write("Hello world");

// pour écrire un entier


I c

fw.write(86);
ELH
U
L
// pour écrire un caractèreMO
fw.write(’a’);
h r e fE
A c
c
fw.close();
// fermer le flux

Allons vérifier ce qui a été écrit


Hello worldVa
H & H: Research and Training 7 / 17
Écriture

Les fichiers

Pour écrire à la ligne (mais ce n’est pas pratique)


fw.write("Hello world\n");
fw.write(’a’);
I c

fw.close();
ELH
U
MO
// fermer le flux

f E L
chre
c A

H & H: Research and Training 8 / 17


Écriture

Les fichiers

Pour écrire à la ligne (mais ce n’est pas pratique)


fw.write("Hello world\n");
fw.write(’a’);
I c

fw.close();
ELH
U
MO
// fermer le flux

f E L
chre
Contenu du fichierc A

Hello world
a

H & H: Research and Training 8 / 17


Écriture

Les fichiers

On peut aussi utiliser un objet de la classe BufferedWriter


BufferedWriter bw = new BufferedWriter(fw);

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 9 / 17


Écriture

Les fichiers

On peut aussi utiliser un objet de la classe BufferedWriter


BufferedWriter bw = new BufferedWriter(fw);

I c

ELH
Pour écrire U
L MO
bw.write("Hello world");
f E
bw.newLine();
chre
bw.write(87);
bw.newLine(); c A

bw.write(’a’);
bw.close();
// fermer le flux

H & H: Research and Training 9 / 17


Écriture

Les fichiers

BufferedWriter vs FileWriter
I c
H
ELcaractère par
U
FileWriter écrit directement dans le fichier
caractère
L MO
r
BufferedWriter écrite E un buffer puis envoie tout dans le
f dans
A
fichier quand on h
cappelle la méthode flush ou close
c

H & H: Research and Training 10 / 17


Lecture

Les fichiers

Création physique d’un fichier pour lecture


I c

FileReader fr = new FileReader(file);
ELH
U
L MO
f E
chre
c A

H & H: Research and Training 11 / 17


Lecture

Les fichiers

Création physique d’un fichier pour lecture


I c

FileReader fr = new FileReader(file);
ELH
U
L MO
f E
reles deux étapes de création
h
On peut aussi fusionner
c

FileReaderc frA= new FileReader("fichier.txt");

H & H: Research and Training 11 / 17


Lecture

Les fichiers
Pour lire un caractère d’un fichier
int str = fr.read();

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 12 / 17


Lecture

Les fichiers
Pour lire un caractère d’un fichier
int str = fr.read();

I c

Affichons ce qu’on a lu ELH
U
System.out.println(str);
L MO
f E
hre
// affiche le code ASCII du caractère lu
c
c A

H & H: Research and Training 12 / 17


Lecture

Les fichiers
Pour lire un caractère d’un fichier
int str = fr.read();

I c

Affichons ce qu’on a lu ELH
U
System.out.println(str);
L MO
f E
hre
// affiche le code ASCII du caractère lu
c
c A

Pour afficher le caractère associé au code ASCII lu
System.out.println((char)str);
// affiche le caractère lu

H & H: Research and Training 12 / 17


Lecture

Les fichiers
Pour lire et afficher tout le contenu du fichier
int str = fr.read();
while (str != -1) {
System.out.println((char)str);
I c

// affiche tous les caractères lus
ELH
U
MO
str = fr.read();
}
f E L
chre
c A

H & H: Research and Training 13 / 17


Lecture

Les fichiers
Pour lire et afficher tout le contenu du fichier
int str = fr.read();
while (str != -1) {
System.out.println((char)str);
I c

// affiche tous les caractères lus
ELH
U
MO
str = fr.read();
}
f E L
A c hre
c
Ou en plus simple
while ((str = fr.read()) != -1)
System.out.println(str);
// affiche tous les caractères lus

H & H: Research and Training 13 / 17


Lecture

Les fichiers
Remarque
Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autre
objet : BufferedReader

I c

ELH
U
L MO
f E
chre
c A

H & H: Research and Training 14 / 17


Lecture

Les fichiers
Remarque
Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autre
objet : BufferedReader

I c

EL H
U
Pour instancier BufferedReaderMO
f E L = new BufferedReader(
c h re
BufferedReader bufferedReader

c A
fr);

H & H: Research and Training 14 / 17


Lecture

Les fichiers
Remarque
Pour que l’on puisse lire le fichier ligne par ligne, il faut utiliser un autre
objet : BufferedReader

I c

EL H
U
Pour instancier BufferedReaderMO
f E L = new BufferedReader(
c h re
BufferedReader bufferedReader

c A
fr);

Pour lire et afficher une ligne
String string = bufferedReader.readLine();
System.out.println(string);
H & H: Research and Training 14 / 17
Lecture

Les fichiers

Pour lire et afficher toutes les lignes


String string = bufferedReader.readLine();
while (string != null) {
System.out.println(string); I c

string = bufferedReader.readLine(); ELH
U
}
L MO
f E
chre
c A

H & H: Research and Training 15 / 17


Lecture

Les fichiers

Pour lire et afficher toutes les lignes


String string = bufferedReader.readLine();
while (string != null) {
System.out.println(string); I c

string = bufferedReader.readLine(); ELH
U
}
L MO
f E
chre
Ou en plus simple c A

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

H & H: Research and Training 15 / 17


Lecture

Les fichiers

c

On peut toujours lire caractère par caractère
I
int i = bufferedReader.read();
ELH
System.out.println(i); O U
// affiche le code ASCIIL M
r e fE
System.out.println((char)i);
h
A
// affiche le c
caractère lu
c

H & H: Research and Training 16 / 17


Lecture

Les fichiers

I c
Remarque
EL H
Quel que soit l’objet de lecture et/ouM
U
O utilisé, il faut penser à le
écriture
fermer après utilisation.
fE L
c h r e
c A

H & H: Research and Training 17 / 17

Vous aimerez peut-être aussi