• 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
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
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()); } } }