Académique Documents
Professionnel Documents
Culture Documents
Partie 6 - Entrées-Sorties
Partie 6 - Entrées-Sorties
Programmation avancée
Java
PARTIE 6 – ENTRÉES/SORTIES
2
Plan
Historique
Eléments du langage
Classes et objets
Collections
Héritage
Flux E/S
Les API
Interface graphique
Connexion aux bases de données
3
Les exceptions
4
Exceptions
Exemple :
try {
// traitement pouvant lever une exception
} catch (final NullPointerException e) {
// Gestion de l'exception NullPointer
} catch (final Exception ex) {
// Gestion des autres exceptions
}
8
Exceptions
}
10
Exceptions
Les flux
13
Flux
Il existe plusieurs types de flux selon les données que l’on veut manipuler :
ByteArrayInputStream : tableau d’octets
StringBufferInputStream : chaîne de caractères
FileInputStream : fichier
PipedInputStream : pipeline
SequenceInputStream : ensemble de stream
15
Flux d’entrée
fs.close();
16
Flux d’entrée
Pour lire un type de données bien particulier, il faut utiliser une classe dérivant de
FilterInputStream : par exemple la classe DataInputStream
int i = ds.readInt();
17
Flux d’entrée
fs.close();
20
Flux de sortie
Une nouvelle hiérarchie de classes a été mise en place pour gérer les E/S
Son but :
Rendre plus flexible les flux
Internationaliser les flux (Unicode 16 bits)
Augmenter la rapidité des opérations
23
Reader / Writer
input.read(array);
System.out.println(array);
25
Reader / Writer
Package java.io
Cette classe permet de manipuler des fichiers et des répertoires de la
plateforme.
Quelques fonctions :
exists() : vérifie l’existence d’un fichier ou d’un répertoire
canRead() : droits de lecture
canWrite() : droits d’écriture
getLength(): taille
isDirectory() : vérifie si c’est un répertoire
27
Une classe particulière - File
Quelques fonctions :
list() : retourne la liste des fichiers composant un répertoire
getAbsolutePath() : chemin complet
renameTo() : renommage du nom
delete() : suppression
28
StreamTokenizer
// Ecriture
FileOutputStream fos = new FileOutputStream("tmp");
ObjectOutput oos = new ObjectOutputStream(fos);
oos.writeObject("test");
oos.flush();
// Lecture
FileInputStream fis = new FileInputStream("tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
String today = (String)ois.readObject();
32
Sérialisation
Par défaut, tous les champs, quelque soit leur niveau de protection sont
sérialisable
Des problèmes de sécurité peuvent apparaître
Plusieurs solutions existent :
Ne pas implémenter Serializable
Réécrire les méthodes writeObject() et readObject()
Ajouter le mot clé transient sur les champs à protéger
Utiliser les classes javax.crypto.SealedObject ou java.security.SignedObject
33
Fin partie 6
Cyril MARCQ
cyril.marcq@univ-lille.fr