Académique Documents
Professionnel Documents
Culture Documents
COURS : 3
Flux E/S ( Entrées-Sorties)
ENCADRÉ PAR
RÉALISÉ PAR
Mr. EL Abdellaoui Said EMAIL D’ENCADREUR
Guerroum Khawala
Elabdellaoui.said@yahoo.fr
Lbakali Hanane
Abid Saad
Kajji Hala
Année universitaire : 2020/2021
1
Plan
Introduction
Classe File
Flux d’Octets
Flux de caractères
Sérialisation / Désérialisation
Td
2
Introduction
Un
. programme a souvent besoin d'échanger des informations, que ce soit pour recevoir
des données d'une source ou pour envoyer des données vers un destinataire.
La classe File
La Classe File : Création d’ un Objet File 4
Les fichiers et les répertoires sont encapsulés dans la classe File du package java.io. Il
n'existe pas de classe pour traiter les répertoires car ils sont considérés comme des fichiers.
Une instance de la classe File est une représeantation logique d'un fichier ou d'un répertoire qui
peut ne pas exister physiquement sur le disque.
Ligne numéro 9 va pas crée un fichier ou répertoire si le fichier ou le répertoire passer comme
paramètre n'existe pas.
La ligne numéro 9 crée seulement un objet nommé f4 de type File qui représente logiquement un
fichier ou répertoire nommé «newfile.txt» qui n'existe pas physiquement sur le disque .
La Classe File : Les méthodes 6
import java.io.File;
}
La Classe File : Les méthodes Utilisées -- Exemple 1 9
Affichage :
La Classe File : Les méthodes Utilisées -- Exemple 2 10
Affichage :
La Classe File : Les méthodes Utilisées -- Application 1 12
import java.io.*;
public class Q1 {
public static void main(String[] args) {
String[] all=f.list();
for(int i=0; i<all.length; i++)
{
String temp = all[i];
System.out.println(temp);
}
}
}
La Classe File : Les méthodes Utilisées -- Application 2 13
Afficher le contenu d’un répertoire en affichant si les éléments de ce répertoire sont des
fichier ou des répertoires.
Dans le cas ou il s’agit d’un fichier afficher la capacité physique du fichier :
import java.io.*;
public class Q2 {
public static void main(String[] args) {
String rep="D:\\"; File f=new File(rep);
if(f.exists()){
String[] contenu=f.list();
for(int i=0;i<contenu.length;i++) {
File f2=new File(rep, contenu[i]);
if(f2.isDirectory())
System.out.println("REP:"+contenu[i]);
else
System.out.println("Fichier :"+contenu[i]+"Size:"+contenu[i].length());
}}
else{
System.out.println(rep+" n'existe pas");
}
}}
14
Les flux de ce type sont capables de traiter toutes les données. Les classes qui gèrent les flux d'octets héritent d'une des
deux classes abstraites InputStream ou OutputStream.
.
Les objets inputStream et OutputStream 15
Les classes file(Input/output) Stream 16
Java,io,InputStream Java,io,OutputStream
Java,io,FileInputStream Java,io,FileOutputStream
FileOutputStream(String
FileInputStream(String nomfichier)throws FileNoFoundExeption
nomfichier) throws FileOutStream(String nomFichier,booleon
FileNoFoundException append) throws FileNoFoundException
EXEMPLE 17
Nous allons essayer de lire le contenu d’un fichier texte Fichier1.txt et on va le copier dans un autre fichier
Fichier2.txt.
Ecrire un programme qui permet d’afficher le contenu d’un répertoire y compris le contenu de ses sous
répertoires. Le fichier "Fichier1.txt" contient le texte suivant: <<Java Avancée>>
DataInputStream
import java.io.*;
public class exempleDataInput {
public static void(String[] args) {
File f= new File("K:/Flux_E_S/flux_E_S.txt");
InputStream fis;
try {fis= new FileInputStream(f);
DataInputStream data= new DataInputStream(fis);
byte[] t= new byte[fis.available()];
int i=data.read(t);
while(i>0) {
for (int j = 0; j < i; j++) {System.out.print((char)t[j]);
}
i=data.read(t); }
} catch (IOException e) {e.printStackTrace();
}}}
Data(Input/Output)Stream 2
0
DataOutputStream
import java.io.*;
LES FLUX DE
CARACTÈRES
Les flux de caractères 22
Ils transportent des données sous forme de caractères avec le format Unicode qui code les caractères sur 2
octets.
Les classes qui gèrent les flux de caractères héritent d'une des deux classes abstraites Reader ou Writer. Il existe
de nombreuses sous-classes pour traiter les flux de caractères.
Les flux de caractères 23
La classe Reader :
C'est la classe abstraite mère de toutes les classes qui gèrent des flux de caractères en lecture.
Méthodes: Rôle:
close() ferme le flux et libère les ressources qui lui étaient associées
int read(char[]) lire plusieurs caractères et les mettre dans un tableau de caractères
int read(char[], int, int) lire plusieurs caractères. Elle attend en paramètre : un tableau de caractères qui contiendra les caractères lus,
l'indice du premier élément du tableau et le nombre de caractères à lire.
Les flux de caractères 25
La Classe Writer:
La classe Writer est la classe mère de toutes les classes qui gèrent des flux de caractères en écriture.
Méthodes: Rôle:
write(char[], int, int) écrire plusieurs caractères. Elle attend en paramètres : un tableau de caractères, l'indice du premier caractère et le
nombre de caractères à écrire.
write(String, int, int) écrire une portion d'une chaîne de caractères. Elle attend en paramètre : une chaîne de caractères, l'indice du
premier caractère et le nombre de caractères à écrire.
Les flux de caractères 26
Les classes File(Reader/Writer) présentes dans le package java.io, servent à lire et écrire des données
dans un fichier texte.
Les classes FileReader et FileWriter permettent de gérer des flux de caractères avec des fichiers.
la classe FileWriter hérite de la classe OutputStreamWriter. Cette classe possède plusieurs constructeurs et
plusieurs méthodes .
Les flux de caractères 2
7
FILE (READER/WRITER) : APPLICATION3
package snippet;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
Les classes BufferedReader et BufferedWriter permettent lire et écrire un fichier texte ligne par ligne au lieu de caractère
par caractère.
BufferedWriter :
Méthode Rôle
BufferedReader :
import java.io.*;
public class Example3 {
public static void main(String []args){
try {
File f1 = new File ("C:\\Flux-ES\\Flux_ES2.txt");
FileReader fr = new FileReader(f1);
FileWriter fw= new FileWriter(f1);
BufferedReader br= new BufferedReader(fr);
BufferedWriter bw= new BufferedWriter(fw);
String s= "Bonjour a tous";
bw.write(s);
bw.flush();
bw.close();
String str1;
while ((str1=br.readLine())!=null){
System.out.println(str1);
}
fr.close();
}catch(IOException e){} }
}
Les flux de caractères 30
Les classes InputStreamReader/OutputStreamWriter établissent un pont entre les flux d'octets et les flux
de caractères.
La classe InputStreamReader permet de lire des octets et les traduit en caractères en utilisant un décodage
spécifique.
Pour La classe OutputStreamWriter , les caractères sont écrits dans le flux sous forme d'un suite d'octets
en utilisant un encodage.
Les flux de caractères 31
STREAM(READER/WRITER) : EXAMPLE2
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Example5 {
public static void main(String[] args) throws IOException {
try{
File file = new File("C:\\Flux-ES\\Flux_ES3.txt");
InputStreamReader rd = new InputStreamReader (new FileInputStream(file));
OutputStreamWriter wrt = new OutputStreamWriter (new FileOutputStream(file));
//Ecriture
String z ="Bonjour";
wrt.write(z);
wrt.flush();
wrt.close();
//lecture
int i =rd.read();
while(i!=-1) {
System.out.print((char)i);
i= rd.read();
}
}catch(IOException e){}
32
Sérialisation / Désérialisation
33
Introduction
C’est
. quoi la sérialisation ?
Pour pouvoir être sérialisée, une classe doit implémenter l'interface java.io.Serializable.
L’interface « Serializable » n’a pas de méthode à redéfinir, on l’appelle une interface marqueur.
Si une superclasse implémente cet interface toutes ses classes dérivées seront considérés comme
sérialisables.
Voiture
o marque
o modèle
o vitesse
Sérialisation / Désérialisation 37
Sérialisation
voitures.ser
Sérialisation / Désérialisation 39
Sérialisation / Désérialisation 40
voitures.ser
Classe1
o Private int champSecret champSecre
Flux d’octetst
file.ser
Sérialisation / Désérialisation 44
Voiture
o marque
o modèle
o vitesse
o champSecret
45
Td