• Définitions
• Le paquetage java.io
– Utiliser java.io = utiliser/envelopper/wrapper successivement plusieurs classes
• Quelques classes
– Accès séquentiel: texte, formaté, sérialisation
– Accès direct
Définitions
– Un programme a souvent besoin d’importer de l’information depuis une source externe ou d’exporter une information vers une destination externe
– Cette information peut etre : dans un fichier, sur un disque, quelque part sur le réseau, en mémoire, dans un:
• Besoins
•Où?
autre programme
– Elle peut être de n’importe quel type : type de base, objects, caractères, image, sons…
•Quoi ?
Algorithmes de base
• Ecriture
– Ouvrir un flot
– Tant qu’il reste des infos à écrire
• Ecrire une information
– Fermer le flot
• Lecture
– Ouvrir un flot
– Tant qu’il reste des infos à lire
• Lire une information
– Fermer le flot
Un flot (ou flux ou stream en anglais) cache les détails de ce qui arrive aux données
Package Java.io
• Deux hiérarchies de classes « historiques »
Flots de caractères (Unicode 16 bits)
• 2 superclasses abstraites (implémentations partielles) à utiliser pour gérer du texte
• Légende
– Bleu = lecture et écriture de base
– Blanc = traitement en plus
Flots d’octets
• A utiliser pour des données binaires
(images, sons, objets)
Méthodes de Reader et InputStream
• Méthodes similaires mais pour différents types
• Reader (caractères)
– int read()
– int read(char cbuf[])
– int read(char cbuf[], int offset, int length)
• InputStream (octet)
– int read()
– int read(byte cbuf[])
– int read(byte cbuf[], int offset, int length)
• Méthodes pour marquer une position dans le flot, sauter une information, initialiser la position courante
• On utilise généralement plutôt les méthodes des sous-classes
Méthodes de Writer et OutputStream
• Méthodes similaires mais pour différents types
• Writer (caractères)
– int write(int c)
– int write(char cbuf[]) int write(char cbuf[], int offset, int length)
• OutputStream (octet)
– int write(int c)
– int write(byte cbuf[])
– int write(byte cbuf[], int offset, int length)
• Ouverture automatique à la création du flot
• Fermeture par l’appel à la méthode close() pour libérer des ressources système
Tester l’existence d’un fichier File
1 2 3 4 5 6 7 8 9 10 | import java.io.*; public class TestFile { public static void main (String argv[]) { File f = new File ( "bonjour.txt" ); if (f.exists()) System.out.println ( "Le fichier bonjour.txt existe" ); else System.out.println ( "Le fichier bonjour.txt n'existe pas" ); } } |
Informations sur les fichiers File
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.io.*; public class InfosFile { public static void main (String argv[]) { File f = new File ( "Infos.txt" ); if (f.exists()) { System.out.println ( "Informations sur le fichier Infos.txt" ); System.out.println ( "isFile : " + f.isFile()); System.out.println ( "isDirectory : " + f.isDirectory()); System.out.println ( "getAbsolutePath : " + f.getAbsolutePath()); System.out.println ( "length : " + f.length()); System.out.println ( "canRead : " + f.canRead()); System.out.println ( "canWrite : " + f.canWrite()); } } } |
