Avis de Jean Vaucher Professeur au DIRO Universite de Montreal Version 1.2 (jan 2000)
=====================
Fichiers en JAVA
=====================
(v 1.0: Fev. 1999 )
…. Java se retrouve avec 44 classes de base et l'usager doit créer et combiner 2 ou trois objets de ces classes pour ouvrir un fichier……
…. Un aspect surprenant des ES en Java est que certaines opérations qui sont très faciles a faire avec des langages plus vieux comme Pascal, Fortran, Basic et même C, sont impossible a réaliser simplement en Java.
En Java, il existe tellement de classes pour faire des
entrées-sorties (ES) qu'il est difficile de savoir lesquelles utiliser. De plus, il faut normalement créer et combiner 2 ou trois objets de ces classes pour faire quoi
que ce soit.
STREAMS
=======
Le Stream (flux en français) est le concept de base des entrées/sorties en Java. Un STREAM représente une suite d'octets qui sont accédés un a un. Il y a InputStream pour la lecture et OutputStream pour l'écriture.
. . .
Résumé « théorique » des fichiers (par Le Van N.)
Lecture d’un fichier texte :
classe Object
public
abstract
class java.io.Reader
…
abstract void close() ; // Close the stream.
abstract int read(char[] cbuf, int off, int len) // Read characters into a portion of an array.
…
public class java.io.
InputStreamReadter extends Reader
public class java.io.
BufferedReader
extends Reader
un constructeur:
public BufferedReader(Reader in)
Create a buffering character-input stream that uses a default- sized input buffer.
Parameters: in - A Reader public void close()
throws IOException Close the stream.
Overrides: close in class Reader
Throws: IOException - If an I/O error occurs public String readLine()
throws IOException Read a line of text.
Création d’un fichier texte :
classe Object
public abstract class java.io. Writer extends Object
abstract
void close() ; // Close the stream, flushing it first.
abstract
void flush() ; // Flush the stream.
void write(char[] cbuf) ; // Write an array of characters.
etc …. etc ….
public class java.io.
OutputStreamWriter
extends Writer
public class java.io.
PrintWriter
extends Writer
un constructeur:
public PrintWriter(Writer out);
public void println(String x);
Print a String and then terminate the line.
public class java.io.
FileWriter
extends OutputStreamWriterun des constructeurs :
public FileWriter(String fileName) throws IOException
… autres constructeurs + methodes …..
Quelques classes + interfaces utilisées pour la création d'un fichier binaire :
classe Object
OutputStream
FilterOutPutStream
public void
close();
FileOutputStream
public FileOutputStream String name);
etc . . .
DataOutput (une interface)
public abstract void writeInt(int valeur);
public abstract void writeChar(int v);
public abstract void writeDouble(double val);
etc . . .
DataOutputStream
public DataOutputStream(OutputStream os);
public final void writeInt(int valeur);
public final void writeChar(int v);
public final void writeDouble(double val);
etc . . .
public class java.io.DataOutputStream
extends java.io.FilterOutputStream
implements java.io.DataOutput
Quelques classes + interfaces utilisées pour la lecture d'un fichier binaire :
classe Object
InputStream
FilterInputStream
public void
close();
FileInputStream
public FileInputStream String name);
etc . . .
DataInput (une interface)
public abstract int readInt();
public abstract double readDouble();
etc . . .
DataInputStream
public DataInputStream(InputStream is);
public final int readInt();
public final double readDouble();
etc . . .
public class java.io.DataInputStream extends java.io.FilterInputStream implements java.io.DataInput
(DataInputStream est dérivée de FilterInputStream
et implémente l'interface DataInput)
Résumé technique : A) Fichier de type texte :
1) Création d’un fichier de type texte a) nommer le fichier :
PrintWriter aCreer = new PrintWriter( new FileWriter(nomACreer));
b) écrire son contenu (souvent dans une boucle)
aCreer.print (….) ; ou aCreer.println (….) ; c) fermer le fichier :
aCreer.close() ;
2) Lecture d’un fichier de type texte : on a fait beaucoup d’exemples ! B) Fichier binaire :
1) Création d’un fichier binaire a. Nommer le fichier :
DataOutputStream aCreer = new DataOutputStream
( new FileOutputStream(nom du fichier));
à adapter : le nom du fichier
b. Écrire son contenu (
très souvent dans une boucle)
Dans une boucle (à 99% des cas) :Combiner des écritures en mode binaire :
aCreer.writeInt(un entier);
aCreer.writeChar(un caractère);
etc . . .