0% ont trouvé ce document utile (0 vote)
14 vues25 pages

Java Flux

Le document traite des entrées et sorties en Java, en expliquant le principe des streams pour la communication et le traitement des données. Il présente également la classe File et ses méthodes pour manipuler les fichiers, ainsi que des exemples d'utilisation pour lire, écrire, crypter, compresser et décompresser des fichiers. Enfin, il aborde la sérialisation des objets en Java pour les applications distribuées.

Transféré par

Mouna Ncibi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues25 pages

Java Flux

Le document traite des entrées et sorties en Java, en expliquant le principe des streams pour la communication et le traitement des données. Il présente également la classe File et ses méthodes pour manipuler les fichiers, ainsi que des exemples d'utilisation pour lire, écrire, crypter, compresser et décompresser des fichiers. Enfin, il aborde la sérialisation des objets en Java pour les applications distribuées.

Transféré par

Mouna Ncibi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Entrés Sorties

1
Entrées Sorties
Modem3G
Modem3G

Programme Ficher

Fichier Strea
ms
d’entré
Stream
e
Clavier s de Imprimante
sortie
Un autre Programme
Moniteur
Stream
s De
sortie
Stream
s
D’entr 2
ée
Principe des
entrées/sorties
Pour effectuer une entrée ou une sortie de données en Java,
le principe est simple et se résume aux opérations suivantes :
 Ouverture d'un moyen de communication.
 Écriture ou lecture des données.
 Fermeture du moyen de communication.

En Java, les moyens de communication sont représentés par


des objets particuliers appelés (en anglais) stream. Ce mot,
qui signifie courant, ou flot

3
Streams
Streams

Communication Traitement

Binaires Caractères B C

InputStream OutputStream Reader Writer IS OS R W

E.B S.B E.C S.C E.B S.B E.C


S.C

 Il existe deux types de streams:


 Streams de Communication: établit une liaison entre le
programme et une destination.
 Streams binaires : Exemple FileInputStream,
FileOutputStream
 Streams de caractères : Exemple FileReader, FileWriter
 Streams de Traitement : Permet de traiter les information des
streams de communication.
 Streams binaires : ex BufferedInputStream, ZipInputStream,
ZipOutputStream,…
 Streams de caractères : BufferedReader, BufferedWriter, … 4
La classe File
 La classe File permet de donner des
informations sur un fichier ou un répertoire
 La création d’un objet de la classe File
peut se faire de différentes manières :
 f1=new File("c:/projet/
File fichier.ext");
 f2=new File("c:/projet",
File "fihier.ext");
 f3=new File("c:/projet");
File

5
Principales méthodes de la classe
File
String getName(); Retourne le nom du fichier.

String getPath(); Retourne la localisation du fichier en relatif.

String getAbsolutePath(); Idem mais en absolu.


String getParent(); Retourne le nom du répertoire parent.
boolean renameTo(File newFile); Permet de renommer un fichier.
boolean exists() ; Est-ce que le fichier existe ?
boolean canRead(); Le fichier est t-il lisible ?
boolean canWrite(); Le fichier est t-il modifiable ?
boolean isDirectory(); Permet de savoir si c'est un répertoire.
boolean isFile(); Permet de savoir si c'est un fichier.
long length(); Quelle est sa longueur (en octets) ?
boolean delete(); Permet d'effacer le fichier.
boolean mkdir(); Permet de créer un répertoire.
String[] list(); On demande la liste des fichiers localisés dans le répertoire.
6
Premier Exemple d’utilisation de la
classe File
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.File; Fichier :aff2 (2).asm Size:12
public class Fichier :aff2.asm Size:8
Application1 { REP:And
REP:androideProjets
public static void main(String[] REP:AP
args) { String rep="c:/"; File REP:APP
f=new File(rep); if(f.exists()){ Fichier :aqua_bitmap.cpp
Size:15
String[] contenu=f.list(); Fichier :autoexec.bat
for(int i=0;i<contenu.length;i+ Size:12
+){ File f2=new
File(rep,contenu[i]);
if(f2.isDirectory())
System.out.println("REP:"+cont
enu[i]);
else
System.out.println("Fichier :"+contenu[
i]+" Size:"+contenu[i].length());
}
}
} else{
} System.out.println(rep+" n'existe 7
pas");
}
Lire et Écrire sur un fichier texte
fr:FileRead f1:Fil
er e
Fichier1.txt
read():int

fw:FileWrit f2:Fil
er e
Fichier2.txt
write(int c):void

File f1=new
File("c:/Fichier1.txt");
FileReader fr=new
FileReader(f1); File f2=new
File("c:/Fichier2.txt");
FileWriter fw=new
FileWriter(f2); int c;
while((c=fr.read())!=-
1){ fw.write(c);
}
fr.close();fw.close();
4
0
Exemple 1 : Crypter un
fichier
 Texte
Considérons un fichier texte nommé « operations.txt » qui contient
les opérations sur un compte.
 Chaque ligne de ce fichier représente une opérations qui est définie
par :
 le numéro de l’opération,
 le numéro de compte,
 la date d’opération,
 le type d’opération (Versement ou Retrait)
 et le montant de l’opération.
 Voici un exemple de fichier :
321;CC1;2011-01-11;V;4500
512;CC1;2011-01-11;V;26000
623;CC1;2011-01-11;R;9000
815;CC1;2011-01-11;R;2500

9
Exemple 1 : Crypter un
fichier Texte
import java.io.File;
import
java.io.FileReader;
import
java.io.FileWriter;
public class App2 {
public static void main(String[] args) throws
Exception
File f2=new{ File f1=new File("operations.txt"); operations.txt
File("operationsCryptes.txt");
FileReader
FileWriter fr=new
fw=new FileReader(f1); 321;CC1;2011-01-11;V;4500
FileWriter(f2); int c; 512;CC1;2011-01-11;V;26000
623;CC1;2011-01-11;R;9000
while((c=fr.read())!=-
815;CC1;2011-01-11;R;2500
1)
{ fw.write(c+1); operationsCryptes.txt
}
fr.close();
432<DD2<3122.12.22<W<5611623<DD2<3122.12.22<W<37111734<DD2<
fw.close();
} 3122.12.22<S<:111926<DD2<3122.12.22<S<3611
}

1
0
Lire et Écrire sur un fichier binaire

fis:FileInputStream f1:Fil
e
image1.jp
read():int g

fos:FileOutputStre f2:Fil
am e
image2.jpg

File f1=new File("c:/image1.jpg");


write(int c ):void
FileInputStream fis=new
FileInputStream(f1); File f2=new
File("c:/image2.jpg"); FileOutputStream
fos=new FileOutPutStream(f2); int c;
while((c=fis.read())!=-
1){ fos.write(c);
}
fis.close();fos.close();
1
1
Lire et Écrire sur un fichier texte ligne par ligne :
Streams de traitement : BufferedReader et
BufferedWriter

br:BufferedRead fr:FileRead f1:Fil


er er e
Fichier1.t
readLine():Stri read():in xt
ng t

bw:BufferedWrit fw:FileWrit f2:Fil


er er e
Fichier2.t
write(String s):void
xt
newLine():void write(int c):void

File f1=new File("c:/Fichier1.txt");


FileReader fr=new FileReader(f1);
BufferedReader br=new
BufferedReader(fr); File f2=new
File("c:/Fichier2.txt"); FileWriter
fw=new FileWriter(f2); BufferedWriter
bw=new BufferedWriter(fw); String s;
while((s=br.readLine())!
=null)
}
{ bw.write(s);bw.newLine
br.close();bw.close( 12
();
);
Exemple 3 : Afficher le total
des opérations de
versements et de retraits
import java.io.*;
public class
App3 {
public static void main(String[] args) throws
Exception { File f=new File("operations.txt");
FileReader fr=new FileReader(f);
BufferedReader br=new
BufferedReader(fr);
String op;double totalVersements=0;double
totalRetraits=0; while((op=br.readLine())!=null){
String[] tabOp=op.split(";");
String typeOp=tabOp[3];
double
montant=Double.parseDouble(tabOp[4]);
if(typeOp.equals("V"))
totalVersements+=montan
t; else
totalRetraits+=montan
} t;
} }
13
System.out.println("Total
Versement:"+totalVersements);
System.out.println("Total
Compression ZIP : Stream de traitement :
ZipOutputStream

bis:BufferedInputStre fis:FileInputStrea f1:Fil


am m e
Fichier.do
read():i read():i c
nt nt

zos:ZipOutputStre bos:BufferedOutputStre fos:FileOutputStre f2:Fil


am am am
write():void e
setMethod():v
Fichier.z
oid
putNextEntry():v write(int c):void ip
oid read():int
File f1=new File("c:/","Fichier.doc");
FileInputStream fis=new
FileInputStream(f1);
BufferedInputStream bis=new
BufferedInputStream(fis); File f2=new
File("Fichier.zip");
FileOutputStream fos=new FileOutputStream(f2);
BufferedOutputStream bos=new
BufferedOutputStream(fos); ZipOutputStream
zos=new ZipOutputStream(bos);
zos.setMethod(ZipOutputStream.DEFLATED);
zos.putNextEntry(new ZipEntry(f1.getName()));
int c;
}
while ((c=bis.read())!=-
zos.close();bis.close
();1){ zos.write(c);
Exemple 4 : Compression d’un fichier
import java.io.*;import
java.util.zip.*; public class App4
{
public static void main(String[] args) throws
Exception { File f1=new File("fichier.doc");
FileInputStream fis=new FileInputStream(f1);
BufferedInputStream bis=new
BufferedInputStream(fis); File f2=new
File("fichier.zip");
FileOutputStream fos=new FileOutputStream(f2);
BufferedOutputStream bos=new
BufferedOutputStream(fos); ZipOutputStream
zos=new ZipOutputStream(bos);
zos.setMethod(ZipOutputStream.DEFLATED);
zos.putNextEntry(new ZipEntry(f1.getName()));
int c;
while((c=bis.read())!=-
1){ zos.write(c);
}
bis.close();
} zos.close();
1
}
System.out.println("Capac 5
ite de "+f1.getName()+"
Décompression ZIP : Stream de traitement :
ZipInputStream
zos:ZipInputStre bis:BufferedInputStre fis:FileInputStrea f1:Fil
am am m
read():int e
getNextEntr
Fichier.z
y() read():i read():i ip
nt nt

bos:BufferedOutputStre fos:FileOutputStre f2:Fil


am am
e
Fichier.doc
write(int c):void read():int

File f1=new File("Fichier.zip");


FileInputStream fis=new
FileInputStream(f1);
BufferedInputStream bis=new
BufferedInputStream(fis); ZipInputStream
zis=new ZipInputStream(bis);
ZipEntry
ze=zis.getNextEntry(); File
f2=new File(ze.getName());
FileOutputStream fos=new FileOutputStream(f2);
bos.write(c
BufferedOutputStream bos=new
});
BufferedOutputStream(fos); int c; 41
zis.close();bos.close
while ((c=zis.read())!=-1){ 86
();
Exemple 5 : Décompression d’un
fichier
import zip
java.io.*;import
java.util.zip.*; public class App5
{
public static void main(String[] args)throws
Exception { File f1=new File("fichier.zip");
FileInputStream fis=new FileInputStream(f1);
BufferedInputStream bis=new
BufferedInputStream(fis); ZipInputStream
zis=new ZipInputStream(bis);
ZipEntry
ze=zis.getNextEntry(); File
f2=new File(ze.getName());
FileOutputStream fos=new FileOutputStream(f2);
BufferedOutputStream bos=new
BufferedOutputStream(fos); int c;
while((c=zis.read())!=-
1){ bos.write(c);
}
zis.close();
}
} bos.close(); 4
9
System.out.println("Capac
ite de "+f1.getName()+"
Les flux de données prédéfinis (1)

Il existe 3 flux prédéfinis :


• l'entrée standard System.in (instance de InputStream)
• la sortie standard System.out (instance de PrintStream)
• la sortie standard d'erreurs System.err(instance de PrintStream)
try {
int c;
while((c = System.in.read()) != -1) {
System.out.print(c);
}
} catch(IOException e) {
System.out.print(e);
}
Les flux de données prédéfinis (2)

try {
Reader reader = new InputStreamReader(System.in);
BufferedReader keyboard = new BufferedReader(reader);

System.out.print("Entrez une ligne de texte : ");


String line = keyboard.readLine();
System.out.println("Vous avez saisi : " + line);
} catch(IOException e) {
System.out.print(e);}
La classe Scanner

 Une classe injustement méconnue du JDK est Scanner (depuis la


verison 5 de Java)
 fonctionnalités très intéressantes pour parser des chaînes de
caractères, et en extraire et convertir les composants.
 Un Scanner peut se brancher sur à peu près n'importe quelle
source : InputStream, Readable (et donc Reader), File... et bien sûr
une simple String.
 Ensuite utiliser les méthodes de type hasNext...() / next...(), ou alors
les méthodes de type find...()

Scanner sc = new Scanner(System.in);


int i = sc.nextInt();

2
0
2
1
La sérialisation
 La sérialisation est une opérations qui permet d’envoyer un
objet sous forme d’une tableau d’octets dans une sortie
quelconque (Fichier, réseau, port série etc..)
 Les applications distribuées utilisent beaucoup ce concept
pour échanger les objets java entre les applications via le
réseau.
 Pour sérialiser un objet, on utiliser la méthode writeObject() de la
classe ObjectOutputStream
 La désérialisation est une opération qui permet de reconstruire
l’objet à partir d’une série d’octets récupérés à partir d’une
entrée quelconque.
 Pour dé sérialiser un objet, on utilise la méthode readObject()
de la classe ObjectInputStream.
 Pour pouvoir sérialiser un objet, sa classe doit implémenter
l’interface Serializable
 Pour designer les attributs d’un objet qui ne doivent pas
être 2
2
sérialisés, on doit les déclarer transient
Exemple d’une classe
package metier;
Serializable
import
java.io.Serializable;
import java.util.Date;
public class Operation implements
Serializable { private int
numeroOperation;
private transient Date
dateOperation; private String
numeroCompte;
private String
typeOperation; private
double
public montant;
Operation(int numOp, Date dateOp, String to, mt)
numC,String
this.numeroOperation = numOp;this.dateOperation = double {
dateOp;
public this.numeroCompte
Operation() { } = numC;this.typeOperation
= to; this.montant = mt;
}
// Getters et Setters
}
2
3
Sérialisation
oos:ObjectOutputStre fos:FileOutputStre f:Fil
am am e
banque.t
writeObject(Object write(int xt
o):void c)
import java.io.*;import
java.util.Date; import
metier.Operation;
public class Serialisation {
public static void main(String[] args) throws Exception {
Operation op1=new Operation(1,new Date(), "CC1", "V",
40000); Operation op2=new Operation(2,new Date(),
"CC1", "R", 6000); File f=new File("banque.txt");
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oos=new
ObjectOutputStream(fos); oos.writeObject(op1);
oos.writeObject(op2);
oos.close();
}
}
2
4
DéSérialisation
ois:ObjectInputStre fis:FileInputStrea f:Fil
am m e
banque.t
readObject():Obje read():i xt
ct nt

import java.io.*;
import
metier.Operation;
public class
Deserialisation {
public static void main(String[] args) throws
Exception { File f=new File("banque.txt");
FileInputStream fis=new FileInputStream(f);
ObjectInputStream ois=new
ObjectInputStream(fis); Operation
op1=(Operation) ois.readObject(); Operation
op2=(Operation) ois.readObject();
System.out.println("Num:"+op1.getNumeroOperation
());
System.out.println("Date:"+op1.getDateOperation(
));
System.out.println("Compte:"+op1.getNumeroCompte
()); 2
5
System.out.println("Type:"+op1.getTypeOperation(
));

Vous aimerez peut-être aussi