• Aucun résultat trouvé

0-M02 – Introduction `a la programmation Cours n

N/A
N/A
Protected

Academic year: 2022

Partager "0-M02 – Introduction `a la programmation Cours n"

Copied!
13
0
0

Texte intégral

(1)

0-M02 – Introduction ` a la programmation

Cours n°6 Fichiers et flux de donn´ees

Camille Coti

camille.coti@iutv.univ-paris13.fr

IUT de Villetaneuse, d´epartement R&T

2011 – 2012

(2)

Flux

D´efinition

Unfluxest une s´equence d’informations.

Il peut ˆetre en lecture ou en ´ecriture

Ces informations peuvent ˆetre des octets (binaire) ou des caract`eres En Java :

Unflux d’entr´eeest caract´eris´e par unesource(entr´ee) `a partir de laquelle onlitdes informations

Unflux de sortieest caract´eris´e par unedestination(sortie) sur laquelle on´ecritdes informations

Exemples : fichier, socket vers une machine distante, p´eriph´erique...

Flux d’octets: 1 octet = 8 bits

Repr´esente des donn´ees binaires input stream: flux d’entr´ee d’octets

output stream: flux de sortie

Flux de caract`eres:

Caract`eres unicodes = 16 bits Repr´esente des textes (lisibles) reader: flux d’entr´ee de caract`eres

writer: flux de sortie de

(3)

Utilisation d’un flux

Op´erations obligatoires sur un flux :

1 Cr´eer et ouvrir le flux

2 Lire (flux d’entr´ee) ou ´ecrire (flux de sortie) les informations `a partir du (ou sur le) flux

3 Fermer le flux

Classes disponibles : Flux binaires

FileInputStream FileOutputStream DataInputStream DataOutputStream

Flux de caract`eres FileWriter FileReader PrintWriter

(4)

Ecriture dans un fichier (caract` ´ eres)

Les flux de sortie en mode caract`eresh´eritent de la classe abstraite Writer Exemple : FileWriter

M´ethodes :

public abstract void close() throws IOException Ferme le flux de sortie courant

public void write( int c ) throws IOException

´Ecrit le caract`erecsur le flux de sortie courant

public void write( char[] tab ) throws IOException

´Ecrit le tableau de caract`erestabsur le flux de sortie courant public void write( String s ) throws IOException

´Ecrit la chaˆıne de caract`eresssur le flux de sortie courant

Remarque : ces m´ethodes l`event une exception du typeIOException

(5)

Ecriture dans un fichier (caract` ´ eres) : exemple

1 i m p o r t j a v a . i o .∗; 2

3 p u b l i c c l a s s t e x t F i l e W r i t e r { 4

5 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 6 F i l e W r i t e r fw ;

7

8 t r y{

9 fw = new F i l e W r i t e r ( ” e s s a i . t x t ” ) ; 10 fw . w r i t e ( ” t o t o ” ) ;

11 fw . c l o s e ( ) ;

12 }

13 c a t c h( I O E x c e p t i o n e ) {

14 Sys tem . o u t . p r i n t l n ( e ) ;

15 fw = n u l l;

16 }

17 }

18 19 }

(6)

Lecture dans un fichier (caract` eres)

Les flux d’entr´ee en mode caract`eresh´eritent de la classe abstraite Reader Exemple : FileReader

M´ethodes :

public abstract void close() throws IOException Ferme le flux d’entr´ee courant

public int read( ) throws IOException

Lit un caract`ere depuis le flux d’entr´ee courant. Retourne le caract`ere lu ou -1 si rien n’a pu ˆetre lu

public int read( char[] tab ) throws IOException tabdoit ˆetre initialis´e avec une longueur non nulletab.length

Tente de liretab.lengthcaract`eres depuis le flux d’entr´ee courant et les stocke danstab

Retourne le nombre de caract`eres r´eellement lus ou -1 si rien n’a pu ˆetre lu

Remarque : ces m´ethodes l`event une exception du typeIOException

(7)

Lecture dans un fichier (caract` eres) : exemple

1 i m p o r t j a v a . i o .∗;

2 p u b l i c c l a s s t e x t F i l e R e a d e r {

3 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 4 F i l e R e a d e r f r ;

5 i n t c ;

6 t r y{

7 f r = new F i l e R e a d e r ( ” e s s a i . t x t ” ) ;

8 c = f r . r e a d ( ) ;

9 w h i l e( c != −1 ) {

10 Syste m . o u t . p r i n t ( (c h a r) c ) ;

11 c = f r . r e a d ( ) ;

12 }

13 f r . c l o s e ( ) ;

14 }

15 c a t c h( I O E x c e p t i o n e ) {

16 Sys tem . o u t . p r i n t l n ( e ) ;

17 f r = n u l l;

18 }

19 }

20 }

(8)

Ecriture dans un fichier (binaire) ´

Les flux de sortie en mode binaireh´eritent de la classe abstraite OutputStream

Exemple : FileOutputStream

M´ethodes :

public abstract void close() throws IOException Ferme le flux de sortie courant

public void write( int b ) throws IOException

´Ecrit l’octet le poid faible deben tant qu’octet sur le flux de sortie courant public void write( byte[] tab ) throws IOException

´Ecrit les octets contenus dans le tableautabsur le flux de sortie courant

Remarque : ces m´ethodes l`event une exception du typeIOException

(9)

Ecriture dans un fichier (binaire) : exemple ´

1 i m p o r t j a v a . i o .∗; 2

3 p u b l i c c l a s s b i n F i l e O u t p u t S t r e a m { 4

5 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 6 F i l e O u t p u t S t r e a m f o ;

7 b y t e[ ] t a b = {1 , 2 , 4};

8

9 t r y {

10 f o = new F i l e O u t p u t S t r e a m ( ” e s s a i 2 . t x t ” ) ;

11 f o . w r i t e ( t a b ) ;

12 f o . c l o s e ( ) ;

13 }

14 c a t c h( I O E x c e p t i o n e ) {

15 Sys tem . o u t . p r i n t l n ( e ) ;

16 f o = n u l l;

17 }

18 }

19 20 }

(10)

Ecriture dans un fichier (binaire) : classe avanc´ ´ ee

Les m´ethodes de la classe FileOutputStream sont rudimentaires M´ethodes plus avanc´ees avec la classe DataOutputStream

Le constructeur deDataOutputStreamprend en param`etre un objet de la classeFileOutputStream

M´ethodes :

public int size() throws IOException Retourne le nombre d’octets ´ecrits sur le flux

public void writeBoolean( boolean b ) throws IOException

´Ecrit le bool´eenben tant qu’octet sur le flux de sortie courant public void writeInt( int i ) throws IOException

´Ecrit l’entierien tant qu’une s´equence de 4 octets sur le flux de sortie courant (octet de poids fort en premier)

Et ainsi de suite pour tous les types primitifs de Java : writeLong( ), writeShort(),writeChar(), etc

Remarque : ces m´ethodes l`event une exception du typeIOException

(11)

Ecriture avanc´ ´ ee dans un fichier (binaire) : exemple

1 i m p o r t j a v a . i o .∗; 2

3 p u b l i c c l a s s b i n D a t a O u t p u t S t r e a m {

4 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 5 F i l e O u t p u t S t r e a m f o ;

6 D a t a O u t p u t S t r e a m d o s ;

7 t r y {

8 f o = new F i l e O u t p u t S t r e a m ( ” e s s a i 2 . t x t ” ) ; 9 d o s = new D a t a O u t p u t S t r e a m ( f o ) ;

10 d o s . w r i t e C h a r s ( ” t o t o t i t i t a t a ” ) ; 11 d o s . w r i t e I n t ( 42 ) ;

12 d o s . c l o s e ( ) ;

13 }

14 c a t c h( I O E x c e p t i o n e ) {

15 Sys tem . o u t . p r i n t l n ( e ) ;

16 f o = n u l l;

17 d o s = n u l l;

18 }

19 }

20 }

(12)

Lecture dans un fichier (binaire)

Les flux d’entr´ee en mode binaireh´eritent de la classe abstraite InputStream Exemple : FileInputStream

M´ethodes :

public abstract void close() throws IOException Ferme le flux d’entr´ee courant

public abstract int read( ) throws IOException

Lit un caract`ere depuis le flux d’entr´ee courant. Retourne le caract`ere lu ou -1 si rien n’a pu ˆetre lu

public int read( char[] tab ) throws IOException tabdoit ˆetre initialis´e avec une longueur non nulletab.length

Tente de liretab.lengthcaract`eres depuis le flux d’entr´ee courant et les stocke danstab

Retourne le nombre de caract`eres r´eellement lus ou -1 si rien n’a pu ˆetre lu

Remarque : ces m´ethodes l`event une exception du typeIOException

(13)

Lecture dans un fichier (binaire) : classe avanc´ ee

Comme pour FileOutputStream, les m´ethodes de la classe FileInputStream sont rudimentaires

M´ethodes plus avanc´ees avec la classe DataInputStream

Le constructeur deDataInputStreamprend en param`etre un objet de la classeFileInputStream

M´ethodes :

public int size() throws IOException Retourne le nombre d’octets ´ecrits sur le flux

public boolean readBoolean( ) throws IOException public int readInt( ) throws IOException

public char readChar( ) throws IOException

Et ainsi de suite pour tous les types primitifs de Java : writeLong( ), writeShort(),writeChar(), etc

Remarque : ces m´ethodes l`event une exception du typeIOException

Références

Documents relatifs

Compl´eter le programme pour d´eterminer le nombre de caract`eres de chacun des mots contenus dans ce texte. D`es que la longueur d’un mot est connue, affichez en

Le mˆ eme signal num´ erique attaque les canaux de modulation externes de deux synth´ etiseurs radiofr´ equences ´ emettant des porteuses de fr´ equence diff´ erentes : est-on

imprime toutes les lignes contenant le mot analyse suivi du mot lexical dans tous les fichiers de suffixe .tex. (L’option -i

Exercice 4 : cryptage Ecrire un programme qui demande ` a l’utilisateur de saisir 26 lettres pour chiffrer les 26 lettres de l’alphabet (et v´ erifie qu’il ne rentre pas deux fois

Syntaxe de l’adressage indirect par registre.- Comme nous l’avons d´ej` a vu, pour d´esigner une valeur constante on ´ecrit cette valeur (en hexad´ecimal), pour une valeur se

Syntaxe de l’adressage indirect par registre en langage symbolique.- Comme nous l’avons d´ej` a vu, en langage symbolique, pour d´esigner une constante on ´ecrit celle-ci

Plusieurs types d’exceptions possibles pour une seule m´ ethode Trairement selon l’erreur rencontr´ ee. On r´ ecup` ere des informations sur l’exception

Ecrire un programme qui affiche le contenu d’un fichier texte en faisant pr´ ´ ec´ eder chaque ligne par son num´ ero (on s´ epare les num´ eros et le texte par une