Académique Documents
Professionnel Documents
Culture Documents
JAVA
A. YAHYAOUY
A.U: 2007-2008
Les fichiers
Introduction
En java, les fichiers sont reprsents par des objets particuliers
appels en anglais (Stream). Ce mot signifie flot en franais.
En java, les streams sont reprsentes dans des classes
dfinies dans le package java.io
Il existe de nombreuses sortes de stream, qui peuvent tre
classs selon plusieurs critres:
Les streams dentres (la lecture) et les streams de sortie
(lcriture).
Les streams de caractres (texte) et les streams de donnes
linaires.
Les streams de traitement des donnes et les streams de
communication de donnes.
Les streams accs squentiel et les streams accs direct.
Les streams avec et sans tampon de donnes.
Exemple 1:
class LectureFichierTexte
{
public static void main(String [] arg) throws IOException
{
BufferedReader stream=null;
String str;
try{
stream=new BufferedReader(new FileReader("fichier.txt"));
}
catch(FileNotFoundException exc){
System.out.println("Erreur d'ouverture du fichier!!");
}
while((str=stream.readLine())!=null)
System.out.println(str);
stream.close();
}
}
Exemple 2
class DemoFileWriter
{
public static void main(String [] arg) throws IOException
{
FileWriter ecrire;
char tmp[]={'u','n','e',' ','c','h','a','i','n','e', ','d','e', ','c','a','r','a','c','t
,'','r','e','s' };
ecrire= new FileWriter ("fichier.txt");
ecrire.write(tmp);
ecrire.write(tmp,5,20);
ecrire.close();
}
}
Exemple 3
class DemoFileReader
{
public static void main(String [] arg) throws IOException
{
FileReader lire;
char tmp[]=new char[1024];
int nbcar;
lire= new FileReader ("fichier.txt");
nbcar=lire.read(tmp);
for(int i=0;i<nbcar;i++)
System.out.print(tmp[i]);
lire.close();
}
}
La classe File
La classe File donne beaucoup dinformations sur les fichiers (la
taille, date de modification, fichier ou rpertoire, )
Constructeurs:
File(String ch): ch est le chemin daccs
File(String ch, String nom): ch est le chemin complet daccs,
nom est le nom du fichier.
La classe File
Quelques mthodes:
canRead(): renvoie true si le fichier est accessible en lecture
canWrite(): renvoie true si le fichier est accessible en criture
isDirectory(): retourne true si le chemin indiqu existe
isFile(): renvoie true si le fichier indiqu existe
list(): retourne le contenu dun rpertoire.
length(): la taille dun fichier
lastModified(): renvoie la date et lheure de la dernire modification
renameTo(File): renomme un fichier ou un rpertoire
getParent(): retourne le nom du rpertoire parent.
delete(): permet de supprimer un fichier ou un rpertoire
Exemple
public class DemoFile
{ public static void main(String [] args)
{
String nomFichier;
File repertoire=new File(".");
if(repertoire.isDirectory())
{
String [] tab=repertoire.list();
for(int i=0;i<tab.length;i++)
{
nomFichier=tab[i];
File fich=new File(nomFichier);
System.out.println(nomFichier);
}
}
}
}
La classe StreamTokenizer
La classe StreamTokenizer permet de dcouper un flux en
entre en units syntaxiques telles que des mots et des
nombres.
Attributs de cette classe:
double nval: valeur dune unit numrique
String sval: chane contenant les caractres dun mot
int ttype: contient le type de lunit syntaxique lue.
int TT_EOF: constante indiquant que la fin du flux est atteinte
int TT_EOL: constante indiquant qe la fin dune ligne est atteinte
int TT_NUMBER: constante indiquant quun nombre a t lu
int TT_WORD: constante indiquant quun mot a t lu
StreamTokenizer
Quelques mthodes:
StreamTokenizer(Reader)
StreamTokenizer(InputStream)
int lineno(): renvoie le numro de la ligne en cours
nextToken(): recherche lunit suivante
ordinaryChars(int): le caractre pass en paramtre devient un
caractre ordinaire
Exemple
class DemoStreamTokenizer
{
public static void main(String [] arg) throws IOException
{ FileReader fiche=new FileReader ("fichier.txt");;
StreamTokenizer lireST=new StreamTokenizer(fiche);
while(lireST.nextToken()!=StreamTokenizer.TT_EOF)
if(lireST.ttype==StreamTokenizer.TT_WORD)
System.out.print(lireST.sval);
fiche.close();
}
}
La classe RandomAccessFile
La classe RandomAccessFile permet daccder un fichier en
mode criture et lecture la fois, comme elle permet de se
dplacer dans un fichier avec la mthode seek.
La classe RandomAccessFile admet deux constructeurs:
RandomAccessFile(File fichier, String mode)
RandomAccessFile(String nom, String mode)
La classe RandomAccessFile
Quelques mthodes de la classe RandomAccessFile:
int readInt(), float readFloat(), char readChar(),
int read(byte [] t, int id, int n): lit jusqu n octets vers le tableau t.
long getFilePointer(): renvoie la position du pointeur.
seek(long pos): positionne le pointeur la position indique.
void close(): ferme le flux de fichier.
void writeInt(int), writeDouble(double),
void write(byte[] t, int id, int n): crit n octets depuis le tableau t
vers le fichier en commenant de la position id.
Exemple
public class FichierRandomAccess
{ public static void main(String [] args) throws IOException
{
File rep=new File(".","fiche.txt");
RandomAccessFile fiche=new RandomAccessFile(rep,"rw");
int nb;
for(int i=0;i<10;i++) fiche.writeInt(i*i);
fiche.seek(8);
fiche.writeInt(100);
fiche.seek(0);
for(int i=0;i<10;i++)
{
nb=fiche.readInt();
System.out.println(nb);
}
}
}