Vous êtes sur la page 1sur 26

Interfaces graphiques  Java

IUT informatique des Cézeaux  SI 2012/2013

Olivier Goutet
o.goutet@openium.fr

25 janvier 2013

1 / 26
Plan

Entrées-Sorties

Fichiers

2 / 26
Plan

Entrées-Sorties
Streams
Readers
Enveloppes
I/O buerisés

Fichiers

3 / 26
I/O

• Entrées et sorties
◦ Fichier
◦ Réseau
• Java fournit tout ce qu'il faut nativement
• Stream
◦ Flot de données
◦ Uni ou bi-directionnel
◦ InputStream, OutputStream, Reader, ...

4 / 26
Package java.io

Learning Java 2nd edition  O'Reilly  Pat Neiemeyer & Jonathan Knudsen
5 / 26
Streams

• InputStream / OutputStream
◦ Classes abstraites
◦ Dénissent les fonctions de base
◦ Base de tous les streams

Learning Java 2nd edition  O'Reilly  Pat Neiemeyer & Jonathan Knudsen
7 / 26
Streams

• Reader / Writer
◦ Classes abstraites
◦ Dédiées aux séquences de caractères (support de unicode)
◦ Base des streams de caractères
• InputStreamReader / InputStreamWriter
◦ Pont entre les streams et les readers

8 / 26
Streams

• DataInputStream / DataOutputStream
◦ Types de base (String, int...)
• ObjectInputStream / ObjectOutputStream
◦ Objets sérialisés
• Buered...
◦ Streams et Readers
◦ Ajout d'un système de tampon
◦ Amélioration des performances
• FileInputStream / FileOutputStream
FileReader / FileWriter
◦ Lecture et écriture dans le système de chier
• ...

9 / 26
Streams standards

• in / out / err

InputStream stdin = System . in ;


OutputStream stdout = System . out ;
OutputStream stderr = System . err ;

int attente = System . in . available ();


if ( attente > 0 ){
byte [] donnees = new byte [ attente ];
System . in . read ( donnees );
...
}

10 / 26
Readers

• InputStream / OutputStream
◦ Byte = 1 octet
◦ Unicode ?
• Readers
◦ Gèrent l'unicode
◦ InputStreamReader et InputStreamWriter pour faire les
conversions avec les Stream
◦ Fonctionne quel que soit la langue

11 / 26
Readers  Exemple

try {
InputStreamReader convertisseur = new InputStreamReader ( System . in );
BufferedReader in = new BufferedReader ( convertisseur );
String texte = in . readLine ();
} catch ( IOException e ){
System . out . println ( " IOException message :" + e. gerMessage ())
e. printStackTrace ();
}

12 / 26
Enveloppes

DataInputStream dis = new DataInputStream ( System . in );


double d = dis . readDouble ();
13 / 26
Enveloppes

• Permet de spécialiser le ux selon ses besoins


• On peux en enchaîner plusieurs
◦ InputStream
◦ BufferedInputStream
◦ DataInputStream

14 / 26
I/O buerisés

• Buered...

• Ajout d'un tampon entre les données et l'application

• Peut améliorer les performances en diminuant le nombre d'accès


réels

• Utilisation des enveloppes

15 / 26
I/O buerisés

FileInputStream fis = new FileInputStream ( " donnees . dat " );


BufferedInputStream bis = new BufferedInputStream ( fis ,4096);
// On peut le re - encapsuler si besoin
bis . read ();

• Au premier appel à read, chargement de 4096 octets (si possible)

• Reremplissage automatique si besoin


• Écriture sur le même principe
◦ flush() pour vider le buer
◦ Ne pas l'oublier !

16 / 26
Tubes (pipes)

• Communication dans l'application

• Par exemple entre deux threads

17 / 26
Tubes (pipes)

PipedInputStream pin = new PipedInputStream ();


PipedOutputStream pout = new PipedOutputStream ( pin );
// ou
PipedOutputStream pout = new PipedOutputStream ();
PipedInputStream pin = new PipedInputStream ( pout );

• PipedReader / PipedWriter
• Lecture bloquante si plus de données

• Écriture bloquante si tube plein

18 / 26
Pour aller plus loin

• PrintWriter

• StringReader

• ...
• Compression de données
◦ GZIPInputStream / GZIPOutputStream
• NIO
◦ E/S asynchrones
◦ Performances améliorées
◦ Fichiers mappés en mémoire
◦ ...

19 / 26
Plan

Entrées-Sorties

Fichiers

20 / 26
Fichiers

• Dicile dans un contexte multi-plateformes


• Java fournit des méthodes pour s'adapter à son environnement
◦ Gestion auto du / et du (ou File.separator)
◦ File.listRoots pour récupérer les têtes de lecture (c :, d :, ... sous
windows et / sous unix)
◦ ...

21 / 26
Classe File

• Classe clef d'accès aux chiers

// Chemin absolu
File fooFile = new File ( " / tmp / foo . txt " );
File barDir = new File ( " / tmp / bar " );
// Chemin relatif
File f = new File ( " foo " );
// equivalent pwd
System . getProperty ( " user . dir " );
// Concatenation
File fooFile = new File ( " / tmp " , " foo . txt " );
// Agregation
File tmpDir = new File ( " / tmp " );
File fooFile = new File ( tmpDir , " foo . txt " );

22 / 26
Classe File

• Ne lève pas d'exceptions


• Vérication que le chier existe
◦ exists()
• Vérication du type
◦ isFile()
◦ isDirectory()
• Vérications du chemin
◦ isAbsolute()

23 / 26
Classe File

• Récupérer les éléments d'un path

String s = " application / data / ratp_arret_graphique . csv " ;


File f = new File ( s );
System . out . println ( f . getName ());
System . out . println ( f . getAbsolutePath ());
System . out . println ( f . getPath ());
System . out . println ( f . getParent ());

24 / 26
Classe File

• Récupérer les éléments d'un path

String s = " application / data / ratp_arret_graphique . csv " ;


File f = new File ( s );
System . out . println ( f . getName ());
System . out . println ( f . getAbsolutePath ());
System . out . println ( f . getPath ());
System . out . println ( f . getParent ());
ratp_arret_graphique.csv
/home/ogoutet/ratp/application/data/ratp_arret_graphique.csv
application/data/ratp_arret_graphique.csv
application/data

25 / 26
Classe File

• Autres méthodes
◦ lastModified()
◦ setLastModified()
◦ length()
◦ list()
◦ listFiles()
◦ mkdir()
◦ ...

26 / 26

Vous aimerez peut-être aussi