Académique Documents
Professionnel Documents
Culture Documents
Courdier
Chapitre 5 : IO
Java
© Rémy Courdier 1996-2002 - Java I/O- Version du cours 1.2 1
Sommaire
03/27/99 1
Iremia, R.Courdier
03/27/99 2
Iremia, R.Courdier
import java.io.*;
System.in public class stdin {
approche UNiX avec : public static void main(String args[]) {
“std input”: System.in try {
System.in est de type // 1a. lecture de lignes en entree:
DataInputStream BufferedReader in =
Un BufferedReader a besoin new BufferedReader(
d’un argument de type Reader new FileReader(args[0]));
c’est pourquoi on passe par un String s, cchar = new String();
InputStreamReader while((s = in.readLine())!= null)
cchar += s + "\n";
in.close();
BufferedReader // 1b. lecture du flot d’entree standard:
Pour augmenter les BufferedReader stdin =
performances de lecture on new BufferedReader(
passe le fichier au new InputStreamReader(System.in));
constructeur d’une classe qui System.out.print("Entrer une ligne:");
utilise un buffer de lecture System.out.println(stdin.readLine());
physique } catch(IOException e) {
e.printStackTrace();
} }}
03/27/99 3
Iremia, R.Courdier
import java.io.*;
/**
* affiche la liste des fichier
Attention !!!
* d’un repertoire
*/
La classe File ne public class FileListe {
public static void main(String args[]) {
represente pas un
try {
pointeur sur le fichier File path = new File(".");
mais seulement le String[] list = path.list();
nom d’un fichier ou for(int i = 0; i < list.length; i++)
d’un ensemble de System.out.println(list[i]);
} catch(Exception e) {
fichiers dans un
e.printStackTrace();
répertoire }
}
}
...
import java.io.*; public static void main(String args[]){
public class FileExemple { if(args[0].equals("-r")) {
private static void infoFic (File f){ if(args.length!=3) System.exit(1);
System.out.println( File
"path: " + f.getAbsolutePath() + ancien = new File(args[1]),
"\n read: " + f.canRead() + nouveau = new File(args[2]);
"\n write: " + f.canWrite() + ancien.renameTo(nouveau);
"\n Name: " + f.getName() + infoFic(ancien );
"\n Parent: " + f.getParent() + infoFic(nouveau);
"\n Path: " + f.getPath() + } else {
"\n length: " + f.length() + if(args.length!=2) System.exit(1);
"\n Modif.: " + f.lastModified()); File f = new File(args[1]);
if(f.isFile()) if(args[0].equals("-d"))
System.out.println("fichier"); if(f.exists()) f.delete();
else if(f.isDirectory()) if(args[0].equals("-c")) {
System.out.println("repertoire"); if(f.exists()) System.exit(1);
} f.mkdirs();
... }
infoFic(f);
}
03/27/99 4
Iremia, R.Courdier
la Classe ObjectOutputStream
classe du package java.io : implémente les méthodes pour “serialiser” des objets,
des tableaux, et les types de base dans un output stream
Principales méthodes :
writeObject() // sauve un objet et les objets qu’il référence
defaultWriteObject() // utilisé lors des sauvegardes personnalisées
la Classe ObjectInputStream
classe du package java.io : implémente les méthodes pour “déserialiser” des
objets, des tableaux, et les types de base dans un output stream
Principales méthodes :
readObject() //lit un objet et les objets qu’il référence
defaultReadObject() //utilisé lors des lectures personnalisées
03/27/99 5
Iremia, R.Courdier
import java.io.*;
public class lecture {
public static void main(String args[]) {
try {
FileInputStream fis =
new FileInputStream (arg[0]);
ObjectInputStream ois =
new ObjectInputStream (fis);
Object unObjet = ois.readObject();
fis.close(); // securite
} catch(Exception e) {
System.out.println (“erreur : + e)
}
}
} Output :
> java lecture
> [sauvegarde, 10, java.awt.rectangle
x=10,y=10,width=150,height=100]
03/27/99 6
Iremia, R.Courdier
Les variables static partagées entre toutes les instances ne sont pas
sauvegardées. il faut les gérer de manière particulière
surcharger les méthodes writeObject(...) et readObject(...)
private void writeObject(ObjectOutputStream oos) {...
oos.defaultWriteObject();
if (...) oos.writeBoolean (unBoolStatic);
...} // dans cet exemple les exceptions sont non gérées
03/27/99 7