Académique Documents
Professionnel Documents
Culture Documents
Par N. Chenfour
N. Chenfour
Chapitre 1. Environnement de
dveloppement Java
1.1 Introduction
Java
est
un
langage
de
programmation
objets
dvelopp
par
Sun
N. Chenfour
mais
en
un
pseudo
code
intermdiaire
appel
Bytecode
par
exemple C1 :
C:\ > java C1
N. Chenfour
1.2.3.3 JavaTM 2
Nous remarquons toutefois que Sun a voulu changer la nomination du JDK en la
remplaant partir de sa version 1.2 par SDK (Software Developpement Kit) ou
plus prcisment J2SDK pour JavaTM 2 SDK . Avec Java 2 dsignant le JDK
1.x (x 2). En fait Sun distingue entre deux concepts :
La spcification propose ou exige par Sun indpendamment des dtails
dimplmentation du langage ou la plate-forme de dveloppement. Celle-ci est
note : J2SE (JavaTM 2 platform Standard Edition).
Le software ou le kit qui implmente la spcification : J2SDK.
Pour terminer la remarque, on rsume que JDK, SDK, Java 2, J2SDK sont tous
des termes qui dsignent la mme chose : le kit de dveloppement Java.
N. Chenfour
Remarques :
Le Package java.lang est un package par dfaut. Ainsi il est possible dutiliser
toutes les classes de ce package sans avoir besoin de le mentionner par une
commande import.
Afin doptimiser lespace disque occup par les packages, Sun a mis en place un
mcanisme darchivage ou compression de tous ces packages (avec leur
classes) sous forme dun fichier dextension .jar (rt.jar). Les classes et les
packages restent comme mme accessibles comme sils ntaient par archivs.
On remarque que le JDK comporte un programme jar.exe (dans le sousrpertoire bin) avec lequel le programmeur peut fabriquer ces propres fichiers
.jar.
1.3 Elments de base du langage Java
StringBuffer
ComboBoxEditor
Un nom de mthode est une squence de mots dont le premier caractre de
chaque mot est en majuscule et les autres en minuscule sauf le premier mot
qui est entirement en minuscule. Exemples :
append
toString
deleteCharAt
Une proprit est en principe un membre priv donc non accessible directement
et par suite on peut lui choisir un nom librement. Sinon on lui applique la mme
rgle que celle dune mthode.
Une constante (final) est une squence de mots majuscules spars par un
blanc soulign _
PI
MIN_VALUE
MAX_VALUE
Les primitives
minuscule :
byte, int,
while, for, if
this, super, try, cach, length,
class, extends, implements, null,
N. Chenfour
10
N. Chenfour
11
...
public class NomDeClassePrincipale {
// Proprits de la classe
// Mthodes de la classe
public static void main(String args[]) {
// Code du programme principal
}
}
N. Chenfour
12
1- Synchronisation 2- Visibilit
public
SYNCHRONIZED
( seulement avec protected
les mthodes )
private
3- Permanence
4- Constance
STATIC
FINAL
Type
void
int
Nom
5- ABSTRACTION
ABSTRACT
N. Chenfour
13
Modificateur synchronized :
Permet de mettre en place une mthode ou un bloc de programme verrouill
par lintermdiaire du mcanisme de moniteur. Une mthode synchronized est
une mthode dont laccs sur un mme objet est ralis en exclusion mutuelle.
Modificateurs private, public et protected :
Une donne ou mthode private est inaccessible depuis lextrieur de la classe
o elle est dfinie mme dans une classe drive.
Une donne ou mthode public est accessible depuis lextrieur de la classe o
elle est dfinie
Une donne ou mthode protected est protge de tout accs externe comme
private sauf partir des classes drives. Une mthode ou donne protected
est donc accessible dans une classe fille.
Remarque :
Lorsquon redfinie une mthode dans une classe fille, il est obligatoire
de conserver son modificateur de visibilit ou dutiliser un privilge daccs plus
fort. Cd :
une mthode public reste public,
une mthode protected reste protected ou devient public,
et une mthode private reste protected ou devient public ou protected.
Modificateur static :
Le modificateur static permet de dfinir une donne ou une mthode commune
toutes les instances de la classe. Ce sont des entits qui existent en labsence
de tout objet de la classe. Ainsi, une donne ou mthode static est associe
sa classe entire, et non une instance particulire de la classe. Le mot cl
static peut aussi tre appliqu toute la classe (static class , mais
uniquement pour les classes internes) dans tel cas tous les membres de la
classe seront static.
N. Chenfour
14
Les membres static peuvent donc tre appels directement par lintermdiaire
du nom de la classe. On na pas besoin de crer une instance de la classe pour
accder une mthode ou donne static se trouvant dans cette classe. Lappel
est ralis simplement laide du slecteur . (le C++, utilise pour ce cas le
slecteur :: ).
Les donnes static sont appeles variable de classe et les mthodes static
sont galement appeles mthodes de classe. Un exemple concret de
mthodes static est la mthode main() qui doit tre static afin de rester
indpendante des autres objets que le programme peut gnrer partir de sa
classe principale.
Remarque :
Puisque les donnes non-static dune classe nont dexistence que
15
}
}
Modificateur final :
Les donnes final sont des constantes. Ces donnes sont gnralement
dfinies en plus public et static afin dtre accessibles depuis lextrieur de la
classe et directement par lintermdiaire du nom de celle-ci sans avoir besoin
de crer une instance de la classe.
Exemple :
class Constantes {
public static final int CONST1 = 20;
public static final double PI = 3.14;
}
Lorsquune mthode porte le modificateur final, elle ne peut pas tre redfinie
dans une classe fille.
Modificateur abstract :
Ce modificateur permet de dfinir une mthode abstraite. Cd une mthode
dont le corps nest pas dfini. Une classe qui comporte une mthode abstraite
doit, elle aussi, tre dfinie abstraite. Il sagit dune classe de spcification qui
ne peut tre directement instancie. Elle ncessite dtre redfinie dans une
classe fille qui aura donc lobjectif dimplmenter les spcifications de la classe
abstraite mre.
La dfinition de mthodes abstraites est ralise de la manire suivante :
abstract class ClassAbstraite {
N. Chenfour
16
Remarque :
Vue la notion dabstraction, une mthode abstraite ne peut pas tre :
- synchronized : car elle nest pas encore dfinie
- static : pour la mme raison (elle na pas encore dexistence, or une mthode
static existe ds la cration de la classe).
- final : car cela va empcher sa redfinition, or une mthode abstract na
dexistence que lorsquelle est dfine
- private : la redfinition dune mthode private signifie en fait la dfinition
dune nouvelle mthode qui porte le mme nom (et non pas le vritable sens de
la redfinition). De ce fait on ne peut pas donner dexistence une mthode
abstraite dclare private. Ce qui interdit la combinaison private-abstract.
N. Chenfour
17
class NomDeClasse {
// donnes membres
NomDeClasse () { // Constructeur
...
}
...
public static void main(String args[]) {
new NomDeClasse();
}
}
Exemple:
class Class1 {
static int x = 20;
int y = 30;
Class1() {
x = x + 1 ; // correcte
y = y * 2 ; // correcte
p2() ; // correcte
}
void p2() {
System.out.println("x = " + x + "
y = " + y) ;
}
public static void main(String args[]) {
new Class1();
y = y * 2 ; // incorrecte
p2() ; // incorrecte
}
}
N. Chenfour
18
Instructions de choix :
if (condition) traitement1 ; else traitement2 ;
switch () { case ... default }
Oprateurs logiques :
&&, ||, !
Les boucles :
for () {}
while (condition) {}
do { } while (condition)
Transtypage :
variable = (type) Expression ;
Commentaires :
//...
/* ...*/
N. Chenfour
19
Une partie statique (fixe) compose de la liste des donnes de lobjet. On les
appelle : Attributs ou Proprits, ou encore : Donnes Membres.
N. Chenfour
20
Attributs ou Proprits
Mthodes ou Fonctions
Membres
2.2 Encapsulation
Un objet tel que dfini plus haut est une variable caractrise par des
proprits et des mthodes. La dfinition de ces proprits et de ces mthodes
devra tre ralise dans une structure de donnes appele classe.
Une classe est donc le support de lencapsulation : cest un ensemble de
donnes et de fonctions regroupes dans une mme entit. Les donnes seront
gnralement appeles des proprits, les fonctions qui oprent sur ces
proprits sont appeles des mthodes.
Crer
un
objet
depuis
une
classe
est
une
opration
qui
sappelle
N. Chenfour
21
Mthodes de la classe
}
Lordre des mthodes dans une classe na pas dimportance. Si dans une classe,
on rencontre dabord la mthode m1() puis la mthode m2(), m2() peut tre
appele sans problme dans m1().
2.4 Instanciation
Il est ncessaire de dclarer un objet avant son instanciation. La dclaration est
ralise de la manire suivante :
NomDeClasse nomDeVariable ;
Linstanciation et ralise ensuite laide de loprateur new qui se charge de
crer une instance (ou un objet) de la classe et de lassocier la variable
nomDeVariable = new NomDeClasse();
Il est possible de runir les 2 instructions en une seule :
NomDeClasse nomDeVariable = new NomDeClasse();
Si objet1 dsigne un objet de type NomDeClasse, et si objet2 est un nouvel
objet cr laide de linstruction objet2 = objet1, il est alors noter que cette
affectation ne dfinit pas un nouvel objet mais objet1 et objet2 dsignent tous
les deux le mme objet.
Loprateur new est un oprateur de haute priorit qui permet dinstancier des
objets et dappeler une mthode particulire de cet objet : le contructeur. Le
constructeur est une mthode de classe (sans valeur de retour) qui port le
mme nom que celui de la classe et dans laquelle sont ralises toutes les
initialisation de lobjet en cours.
Le constructeur peut avoir des paramtres et dans tel cas linstanciation est
ralise avec des arguments dappel :
NomDeClasse nomDeVariable = new NomDeClasse(a1, a2, ...);
N. Chenfour
22
Exemple :
String S = new String("abc");
Pour le cas des chanes de caractres, lcriture prcdente et quivalente
linstruction suivante :
String S = "abc";
Les constantes chanes sont des objets String
N. Chenfour
23
N. Chenfour
24
N. Chenfour
25
26
1
n.inc(5);
5
Remarque :
Les constructeurs peuvent aussi tre surchargs
N. Chenfour
27
classe veut accder aux donnes de la classe, lopration nest possible que par
lintermdiaire de mthodes de la classe prvues cet effet.
Un accesseur est une mthode publique qui donne laccs une proprit
prive dune classe. Laccs peut tre ralis en lecture ou en criture. Par
convention, les accesseurs en lecture commencent par le mot get (ou is ce le
type de la proprit est boolean) et sont appels des getters et les accesseurs
en criture commencent par le mot set et sont appels des setters.
public class Number {
private int value;
public Number(int value) {
This.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
28
N. Chenfour
29
Les types de base (en nombre de 8 plus le type void) sont les seuls types
statiques (non dynamiques). Les Objets et les tableaux sont toujours et
implicitement des donnes dynamiques cres par lintermdiaire du mot cl
new.
Dsignation
Plage de valeurs
byte
short
Entier
sign
2 -32768 32767
sign
sign
8 -263
octets
int
Entier
octets
long
N. Chenfour
Entier
-9223372036854775808
263-1
=
30
octets
9223372036854775807
float
double
-3.4x1038 3.4x1038
char
Caractre 2 octets
true et false
Exemple :
int x = 200 ;
byte b = 64 ;
Exemple :
String S = new String("ceci est une chane de caractres");
N. Chenfour
31
Copie
Un objet peut aussi rfrencer ladresse dun objet existant. Les deux objets
dsigneront alors la mme information. Cependant la destruction de lun des
objets ne causera pas la destruction de lautre.
NomDeClasse objet1 = new NomDeClasse(paramtres dun constructeur);
NomDeClasse objet2 = objet1;
Exemple :
String S1 = new String("ceci est une chane de caractres");
String S2 = S1;
Les chanes de caractres constituent un cas particulier. Elles peuvent en plus
tre initialises des constantes chanes :
S2 = "abc"
Destruction
Un objet en mmoire est dtruit automatiquement par lintermdiaire du
Garbage
Collector.
Aucune
destruction
explicite
nest
alors
ncessaire.
N. Chenfour
32
N. Chenfour
33
Exemple :
Vector L = new Vector();
int x=20;
Integer wx=new Integer(20);
L.add(x);
L.add(wx);
6. Les
variables
de
// est correcte.
types
lmentaires
(primitives)
sont
manipules
directement par valeur tandis que tous les autres objets sont manipuls
par leurs adresses. Ces derniers ncessite alors une cration explicite
aprs leur dclaration (par lintermdiaire de loprateur new).
N. Chenfour
34
// correcte
y = 30 ;
// incorrecte
}
}
Exemple 2 :
class Class1 {
private int x, y ;
void initData() {
x = 20 ;
y = 30 ;
}
public static void main(String args[]) {
initData() ;
// incorrecte
}
}
N. Chenfour
35
10.
N. Chenfour
36
11.
drivet
directement
ou
indirectement
de
la
classe
Object
12.
lune
mthodes
(non
statics)
de
la
classe
linstruction
13.
classe
mre
"
+getClass().getSuperclass().getName());
14.
N. Chenfour
37
Exemple :
try {
System.out.println("mre de java.lang.Thread :" +
Class.forName("java.lang.Thread").getSuperclass().getName());
} catch (Exception e) {}
15.
3.5
La classe Object
Lhritage est un concept qui est toujours utilis en Java. Ainsi chaque
fois que lon dfinisse une nouvelle classe, celle-ci se drive automatiquement
de la classe Object mre de toutes les classes :
class Test {
Test() {
String S = getClass().getName();
System.out.println("Je suis un nouvel objet de la classe : "+S);
}
public static void main(String args[]) {
new Test();
}
}
N. Chenfour
38
v1 = new Class1();
Class1 v2 = v1;
if (v1.equals(v2))
La mthode equals peut tre redfinie pour faire une comparaison sur le
contenu et non la rfrence.
3- protected void
finalize()
Cette mthode est appele par le Garbage Collector lorsquil veut liminer un
objet de la mmoire. Si lon veut raliser un traitement particulier il suffit de
redfinir cette mthode avec le comportement adquat dans les classes
utilises.
4- Class getClass()
Retourne un objet de type Class qui reprsente la classe laquelle appartient
lobjet appelant.
Pour afficher le nom de cette classe, il suffit dappeler la mthode getName()
sur lobjet retourn :
N. Chenfour
39
String S = getClass().getName();
Pour crer un nouvel objet de cette mme classe, on utilise la mthode
newInstance() :
Class c = getClass();
try {
c.newInstance();
} catch (Exception e) {}
5- int hashCode()
Retourne un Hash-Code pour lobjet appelant.
6- void notify()
Cette mthode est appele uniquement dans un moniteur (dans une mthode
synchronized) permettant de rveiller lun dentre les processus qui se sont
fait bloquer dans ce mme moniteur. Le choix du processus rveiller est
ralis par le systme. Lobjet appelant ignore compltement quel serais le
prochain processus rveill.
7- void notifyAll()
Comme notify(), mais rveille tous les processus bloqus dans le moniteur.
8- String toString()
Retourne un reprsentation sous forme de String de lobjet, affichable par
lintermdiaire de la mthode System.out.print(ln). La mthode toString() est
appele chaque fois que lon essai dafficher un objet par la mthode
System.out.print(ln). Il suffit donc de la redfinir dans la classe de lobjet avec
le comportement adquat. Exemple :
class Point {
int x, y;
40
9- void wait()
Cette mthode est appele, comme notify(), lintrieur dun moniteur
permettant le blocage du processus appelant qui restera bloqu jusqu
recevoir un signal notify() envoy par un autre processus.
10- void wait(long timeout)
Comme wait() mais le blocage est pendant timeout millisecondes
11- void wait(long timeout, int nanos)
Comme wait() mais le blocage est pendant timeout millisecondes et nanos
nanosecondes
Remarque :
Puisque toutes les classes Java (existantes ou cres par lutilisateur)
descendent de la classe Object, si on a alors une mthode qui reoit en
paramtre une variable de type Object, on peut alors communiquer cette
mthode un objet de nimporte quel type. Comme exemple, on peut citer la
mthode add de la classe LinkedList (Liste chane) du pakage java.util. Celleci accepte en paramtre une variable de type Object ( add(Object o) ). On
peut donc remplir la liste avec des objets de types varis :
N. Chenfour
41
1- Le bloc try doit tre utilis pour entourer tout code susceptible de
dclencher une exception ayant besoin d'tre gre. Si aucune exception
n'est dclenche, tout le code du bloc try est excut. Mais, si une exception
est dclenche, le code du bloc try arrte l'excution l'endroit o
l'exception a t dclenche et le contrle passe au bloc catch, dans lequel
l'exception est gre.
42
3- Le bloc finally est optionnel. Le code se trouvant dans le bloc finally sera
toujours excut, mme si le bloc try qu'il dclenche une exception et ne se
termine. Le bloc finally est un bon endroit pour placer du code de nettoyage.
N. Chenfour
43
Contraintes :
5. Si la classe A ne dispose daucun constructeur ( le compilateur gnre
un constructeur sans paramtre pour A), la classe B peut tre dfinie
sans contraintes.
Exemple :
class A {
private int x, y;
44
Class B extends A {
Class B extends A {
N. Chenfour
45
Class B extends A {
B() {
super() ;
...
}
}
10. Cet appel comme premire instruction Signifie que si on a une class C qui
drive de B, alors :
-
Ensuite celui de B
Et enfin celui de C :
N. Chenfour
46
Class A {
A() {
System.out.println(A);
}
}
Class B extends A {
B() {
System.out.println(B);
}
}
Class C extends B{
C() {
System.out.println(C);
}
}
N. Chenfour
47
class A {
private int x;
A() {
System.out.println(A);
}
A(int x)
This.x = x;
System.out.println(A(x));
}
}
Class B extends A {
B() {
super(20);
System.out.println(B);
}
}
Au rsultat, on aura:
A(x)
B
N. Chenfour
48
Class B extends A {
B() {
super(20);
System.out.println(B);
}
}
Class C extends B {
C() {
System.out.println(B);
}
}
N. Chenfour
49
this();
this.x = x;
System.out.println(A(x));
}
}
Ou encore :
class A {
private int x;
A() {
this(20);
System.out.println(A);
}
A(int x) {
this.x = x;
System.out.println(A(x));
}
}
N. Chenfour
50
Class B extends A {
B() {
System.out.println(B);
}
void s3() {
...
}
}
N. Chenfour
51
Class A {
A() {
System.out.println(A);
}
void s1() {
System.out.println(Service s1() de A);
}
}
N. Chenfour
52
Class B extends A {
B() {
System.out.println(B);
}
void s1() {
System.out.println(Service s1() Redfini dans B);
}
}
A a = new A() ;
B b = new B() ;
a.s1(); Service s1() de A;
b.s1(); Service s1() Redfini dans B;
17. Si on veut rutiliser le service s1() de la classe Mre dans la classe Fille,
il est possible dappeler le service s1() de la classe Mre depuis la Fille
laide de linstruction super.s1() :
Class B extends A {
B() {
System.out.println(B);
}
void s1() {
System.out.println(Service s1() Redfini dans B);
super.s1();
}
}
N. Chenfour
53
B b = new B() ;
b.s1();
En rsum : Le mot cl super dsigne la classe mre. Il peut tre utilis dans
deux situations diffrentes :
1- Pour appeler un constructeur de la classe mre : il est alors utilis comme
premire instruction du constructeur de la classe fille :
Syntaxe :
super(paramtres du constructeur de la classe mre);
Exemple :
Classe Mre :
class A {
private String name;
A(String S) {
name = S;
}
String getName() {
return name;
}
}
N. Chenfour
54
Classe Fille :
class B extends A {
B(String Nom) {
super(Nom);
}
public static void main(String[] args) {
B objet = new B("objet B");
System.out.println(B.getName());
}
}
2- Pour appeler une mthode de la classe mre, si celle-ci est redfinie dans
la classe fille :
Syntaxe :
super.nomDeLaMethode(paramtres);
Exemple :
class A {
void p()
{
System.out.println("Mthode p() de la classe A");
}
}
N. Chenfour
55
18. Remarque : la classe Object est la classe mre de toutes les classes
sans Mre. Ainsi la dfinition suivante :
class A {
...
}
Est quivalente :
class A extends Object {
...
}
N. Chenfour
56
Rsultats :
19. Rsultat N 1 : La classe Object se trouve en tte de larbre dhritage
de toutes les classes Java.
20. Rsultat N 2 : Toute nouvelle classe va hriter de toutes les mthodes
public de la classe Object.
21. Rsultat N 3 : comme exemple de mthodes, il y a la mthode
toString() invoque automatiquement par le compilateur lors dune
tentative daffichage dun objet :
System.out.println(objet)
aussi
dans
tout
contexte
ncessitant
cette
transformation :
String s ;
s + objet + s + objet.toString() +
22. la mthode toString() est une mthode public de la classe Object qui
retourne une chane de caractre ; lobjet est alors imprimable ou
affichable .
23. La mthode toString() est dfinie par dfaut (dans Object) pour
retourner ladresse de lobjet sous forme dune chane de caractres.
24. Il est donc possible de la redfinir dans nimporte quelle classe pour
choisir le format adquat dafficher des objets de la classe.
N. Chenfour
57
Exemple :
class A {
private int x, y;
NECESSAIRE
25.
privilges daccs :
private
void
p() ;
(Red)
private,
protected,
sans
public
protected void p() ; (Red) protected, sans , public
void p() ; (Red) sans , public
public void p() ; (Red) public
26.
Partie Commune
f
m
Mre
Fille
N. Chenfour
58
27.
Exemple :
Fille f1 = new Fille() ;
Mre m = f1 ; // lobjet mre Pointe une fille.
Fille f2 = (Fille) m ; // Possible
N. Chenfour
59
N. Chenfour
60
Remarques :
1. Une classe qui implmente une interface doit dfinir toutes les mthodes
de linterface.
2. Une interface peut aussi contenir des attributs.
3. Tous les attributs dune interface doivent obligatoirement tre initialiss.
4. Tous les attributs dune interface sont public, static et final.
N. Chenfour
61
5.1 Dclaration :
Type NomDuTableau[] ;
Avec Type est lun des deux cas suivant :
-
un type primitif
une classe
Exemples :
int T1[] ;
Vector T2[] ;
String T3[] ;
62
T1[0] = 34 ;
T1[1] = 45 ;
length
int l = T1.length ; 20
Remarque1 :
Lorsquun tableau est cr, il est impossible de le redimensionner.
La solution :
-
supprimer ce tableau
Exemple :
int T1[] = new int[20] ;
int tmp[] = new int[21] ;
for (int i=0 ; i<T1.length ; i++) tmp[i] = T1[i] ;
tmp[20] = nouvelle valeur;
T1 = tmp;
N. Chenfour
63
Remarque21 :
1. Les 2 critures suivantes sont quivalentes :
Type T[] ;
Type []T ;
2. Une fonction peut retourner un tableau:
int []nomDeMethode() {
N. Chenfour
64
} ;
N. Chenfour
65
Appeler la mthode :
1re solution :
int T1[] = {2, 6, 17} ;
p1(T1) ;
Syntaxe gnrale :
new type [] { valeur/objet, valeur/objet, }
N. Chenfour
66
Remarque :
Si on suppose que la 1re dimension. Cest les lignes et la 2me dimension.
Cest les colonnes :
M.length : le nombre de lignes
M[i].length : le nombre de colonne de la ligne i
Initialisation :
int M [][] = {
{2,
3, 4},
{1, 45, 6}
};
Chaque M[i] est un tableau :
M[0] {2,
3, 4}
M.length = 2 et
M[0].length = M[1].length = 3
Rsultat :
Chaque ligne de la matrice peut avoir un nombre dlment
different:
Exemple :
int M [][] = {
{2,
3},
67
Remarques :
1. Une matrice M est un tableau de tableaux
2. Chaque M[i] est un tableau pouvant tre cr sparment
1. La matrice M peut tre cre comme un tableau dont les lments sont
crs ultrieurement
Exemple :
int M[][] ;
M = new int[3][] ;
N. Chenfour
68
FilterInputStream
PipedOutputStream
BufferedOutputStream
FilterOutputStream
PipedReader
BufferedReader
FilterReader
PipedWriter
BufferedWriter
FilterWriter
PrintStream
ByteArrayInputStream
InputStream
PrintWriter
ByteArrayOutputStream
InputStreamReader
PushbackInputStream
CharArrayReader
LineNumberInputStream
PushbackReader
CharArrayWriter
LineNumberReader
RandomAccessFile
DataInputStream
ObjectInputStream
Reader
DataOutputStream
ObjectInputStream.GetField
SequenceInputStream
File
ObjectOutputStream
SerializablePermission
FileDescriptor
ObjectOutputStream.PutField StreamTokenizer
FileInputStream
ObjectStreamClass
StringBufferInputStream
FileOutputStream
ObjectStreamField
StringReader
FilePermission
OutputStream
StringWriter
FileReader
OutputStreamWriter
Writer
FileWriter
PipedInputStream
N. Chenfour
69
FileReader f
new FileReader("test.txt");
new FileReader("test2.dat");
}
catch (Exception e) {
System.out.println("Erreur d'ouverture du fichier");
System.out.println(e.getMessage());
System.exit(0);
}
Mthodes :
int read().
int debut,
int Nombre)
lus.
N. Chenfour
70
new FileReader("test.txt");
}
catch (IOException e) {
System.out.println("Erreur d'ouverture du fichier");
System.out.println(e.getMessage());
System.exit(0);
}
int c;
while ((c=f.read())!=-1) System.out.print((char)c);
f.close();
}
}
N. Chenfour
71
new FileReader("test.txt");
}
catch (IOException e) {
System.out.println("Erreur d'ouverture du fichier");
System.out.println(e.getMessage());
System.exit(0);
}
char T[]=new char[1000];
int n;
while ((n=f.read(T))> 0) {
String S=new String(T,0,n);
System.out.print(S);
}
}
}
N. Chenfour
72
FileWriter f
new FileWriter("test.dat");
Mthodes :
void write(int c)
N. Chenfour
73
Exemple :
import java.io.*;
class ES03 {
public static void main(String args[]) throws IOException
{
FileWriter f;
f
new FileWriter("test.dat");
(float)45.65;
String S=Float.toString(y);
f.write(S); //ou
f.write( + y);
//ou encore f.write("" + y);
f.close();
}
}
skip(long n);
2-
close();
Fermeture du fichier
flush();
2-
close();
Fermeture du fichier
N. Chenfour
74
new RandomAccessFile("test.dat","rw");
f.seek(f.length());
f.writeBytes("\r\nceci est une nouvelle ligne");
f.write(20);
f.writeBytes("#");
int x
65;
f.write(x);
f.writeBytes(" 30.58");
f.close();
}
}
N. Chenfour
75
RandomAccessFile
Classe Mre :
java.lang.Object
java.io.RandomAccessFile
Constructeur :
RandomAccessFile (String NomDeFichier, String Mode)
avec Mode une chane de caractres qui prcise le mode douverture. Elle peut prendre deux valeurs possibles :
"r"
Ouverture en mode lecture. Si le fichier nexiste pas une exception est dclenche.
"rw"
Exemple :
RandomAccessFile f
new RandomAccessFile("test.dat","rw");
int skipBytes(int n)
long
getFilePointer()
void setLength(long L)
N. Chenfour
76
Remarques :
1- Linstruction f.setLength(L) permet de tronquer un fichier pour quil
ne contiennent plus que L octets si son contenu initial tait suprieur
L.
2- Linstruction f.setLength(0) permet dcraser le contenu du fichier.
Ainsi louverture dun fichier en criture avec crasement du contenu
peut tre ralise de la manire suivante :
RandomAccessFile f = new RandomAccessFile(NomFichier,"rw");
f.setLength(0) ;
Fermeture du fichier.
La fermeture du fichier est ralise par lintermdiaire de la mthode close().
Mthodes dcriture
1 void write(int b)
3 void write(byte[] Tbyte, int Debut, int nb) Ecrit une portion dun tableau doctets
4 void writeBoolean(boolean v)
5 void writeByte(int v)
6 void writeBytes(String s)
7 void writeChar(int v)
8 void writeChars(String s)
9 void writeDouble(double v)
10 void writeFloat(float v)
11 void writeInt(int v)
12 void writeLong(long v)
13 void writeShort(int v)
Exemple :
Dans cet exemple, nous crivons la mme information (30.58) dlimite par les
deux symboles < et > avec diffrents formats :
RandomAccessFile f;
f
new RandomAccessFile("test.dat","rw");
f.writeBytes("<");
f.writeFloat((float)30.58);
f.writeBytes(">\r\n<");
f.writeDouble(30.58);
f.writeBytes(">\r\n<");
f.writeBytes("30.58");
f.writeBytes(">\r\n<");
f.writeChars("30.58");
f.writeBytes(">\r\n<");
f.writeUTF("30.58");
f.writeBytes(">");
Le fichier cr aura le contenu suivant :
crit avec writeFloat (4 octets)
avec writeDouble (8 octets)
avec writeBytes (format texte : 1 octet par
caractre)
avec writeChars (format texte : 2 octets par
caractre)
avec writeUTF (texte UTF : avec entte de 2
octets)
<A>
<@%G~>
<30.58>
< 3 0 . 5 8>
< 30.58>
Mthodes de lecture
1
int read().
int Nombre)
4 boolean readBoolean()
5 byte readByte()
Lit un octet
N. Chenfour
78
6 char readChar()
7 double readDouble()
8 float readFloat()
9 void readFully(byte[] b)
11 int readInt()
12 String readLine()
13 long readLong()
14 short readShort()
15 int readUnsignedByte()
16 int readUnsignedShort()
17 String readUTF()
Exemple 1 : Lecture dun fichier texte par tampon laide dune seule
instruction.
RandomAccessFile f;
f
new RandomAccessFile("test.txt","r");
int L
=(int)f.length();
f.read(T);
N. Chenfour
79
new RandomAccessFile("test.txt","r");
String Ligne;
int n=0;
while ((Ligne=f.readLine())!= null)
System.out.println(Ligne);
f.close();
ObjectInputStream :
pour la lecture
ObjectOutputStream
pour lcriture
Classe Mre :
java.lang.Object
java.io.InputStream
java.io.ObjectInputStream
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
N. Chenfour
80
Constructeur :
ObjectInputStream (new FileInputStream(NomDeFichier))
ObjectOutputStream (new FileOutputStream(NomDeFichier))
}
}
Ecriture : // Srialisation
Produit p =new Produit( ) ;
FileOutputStream fos = new FileOnputStream(NomDeFichier);
ObjectOutputStream fout = new ObjectOutputStream (fos);
fout.writeObject(p);
Lecture : //Dsrialisation
FileInputStream fis = new FileInputStream(NomDeFichier);
ObjectInputStream fin = new ObjectInputStream (fis);
Produit r
N. Chenfour
(Produit)fin.readObject();
81