• Aucun résultat trouvé

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD11 - Flux

N/A
N/A
Protected

Academic year: 2022

Partager "UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD11 - Flux"

Copied!
19
0
0

Texte intégral

(1)

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java

TD11 - Flux

!!

!

Juliana Silva Bernardes

juliana.silva_bernardes@upmc.fr

http://www.lcqb.upmc.fr/julianab/teaching/JAVA/

(2)

2

!

‣Flux de lecture /écriture

‣Manipulation (création, lecture,écriture, . . .)

Sumary

(3)

La classe File

‣ Le paquetage java.io d efinit un grand nombre de classes pour g ́ erer les entr ́ es / ́ sorties d’un programme

2i002 – Introduction `a la Programmation Objet page 175

11 Manipulation de flux entr´ ee / sortie

Objectifs

– Gestion d’arborescences de fichiers – Flux de lecture / ´ecriture

– Manipulation (cr´eation, lecture, ´ecriture, . . .) de fichiers textuels – Mise en m´emoire tampon

– Entr´ee / Sortie standard Propositions :

TD : Exo 71 sur les objets File, Exo 72 (au moins questions 2,3 et 4), Exo 73 sur la copie de fichiers, Exo 74 sur la mise en m´emoire tampon, Exo 75 (Production de compte rendu de TME) et Exo 76 autour de la classe Clavier

TME : Finaliser Exo 72 sur le traitement de texte et realiser l’Exo 75 sur la production automatique de compte rendu de TME

La classe File

Le paquetage java.io d´efinit un grand nombre de classes pour g´erer les entr´es / sorties d’un programme. Parmi elles, la classe File permet de manipuler des fichiers ou des r´epertoires. Une instance de la classe File est une repr´esentation logique d’un fichier ou d’un r´epertoire qui peut ne pas exister physiquement sur le disque. La classe File d´efinit notamment les m´ethodes suivantes :

- File(String path) construit un objet File pointant sur l’emplacement pass´e en param`etre - boolean canRead() indique si le fichier peut ˆetre lu

- boolean canWrite() indique si le fichier peut ˆetre modifi´e

- boolean createNewFile() cr´ee un nouveau fichier vide `a l’emplacement point´e par l’objet File, createNewFile() peut lever l’exception java.io.IOException

- boolean delete() d´etruit le fichier ou le r´epertoire

- boolean exists() indique si le fichier existe physiquement - String getAbsolutePath() renvoie le chemin absolu du fichier

- File getParentFile() renvoie un objet File pointant sur le chemin parent de celui de l’objet File courant - boolean isDirectory() indique si l’objet File pointe sur un r´epertoire

- boolean isFile() indique si l’objet File pointe sur un fichier

- File[] listFiles() si l’objet File est un r´epertoire, renvoie la liste des fichiers qu’il contient - boolean mkdir() cr´eation du r´epertoire

- boolean mkdirs() cr´eation de toute l’arborescence du chemin - boolean renameTo(File f) renomme le fichier

Exercice 71 – Manipulation de fichiers et d’arborescences Soit la classe TestFile suivante :

(4)

4

import java.io.File;

!

public class TestFile {

public static void main(String[] args) { File f=new File(args[0]);

System.out.println(f.getAbsolutePath()) ; } }

La classe File

$ java TestFile file1.txt

/Users/julianab/Documents/Aulas/UPMC/2015-2016/JAVA/TD11/classes/file1.txt

(5)

import java.io.File;

!

public class TestFile {

public static void main(String[] args) { File f=new File(args[0]);

System.out.println(f.getAbsolutePath());

System.out.println("Le fichier existe: “+

(f.exists()?"oui":"non"));

} }

La classe File

java TestFile file1.txt

/Users/julianab/Documents/Aulas/UPMC/2015-2016/JAVA/TD11/classes/file1.txt Le fichier existe : non

(6)

6

import java.io.File;

!

public class TestFile {

public static void main(String[] args) { File f=new File(args[0]);

System.out.println(f.getAbsolutePath()) ; System.out.println("Le fichier existe: “+

(f.exists()?”oui":"non"));

f.createNewFile() ; } }

La classe File

$ javac TestFile.java

TestFile.java:10: error: unreported exception IOException; must be caught or declared to be thrown f.createNewFile() ;

^

1 error

(7)

import java.io.File;

import java.io.IOException;

!

public class TestFile {

public static void main(String[] args) { try {

File f=new File(args[0]);

System.out.println(f.getAbsolutePath()) ; System.out.println("Le fichier existe : “+

(f.exists()?"oui":"non"));

f.createNewFile() ;

System.out.println("Le fichier existe : “+

(f.exists()?"oui":"non"));

}catch (IOException e ) {

System.out.println("Error" + e.getMessage());

} } }

La classe File

$ java TestFile file1.txt

/Users/julianab/Documents/Aulas/UPMC/2015-2016/JAVA/TD11/classes/file1.txt Le fichier existe : non

Le fichier existe : oui

(8)

8

import java.io.File;

import java.io.IOException;

!

public class TestFile {

public static void main(String[] args) { try {

File f=new File(args[0]);

System.out.println(f.getAbsolutePath()) ;

System.out.println("Le fichier existe : “+

(f.exists()?"oui":"non"));

f.createNewFile() ;

System.out.println("On peut le lire : “+

(f.canRead()?"oui":"non"));

System.out.println("On peut le ecrire :”+

(f.canWrite()?"oui":"non"));

}catch (IOException e ) {

System.out.println("Error" + e.getMessage());

} } }

La classe File

$ java TestFile file1.txt

/Users/julianab/Documents/Aulas/UPMC/2015-2016/JAVA/TD11/classes/file1.txt Le fichier existe : oui

Le fichier existe : oui On peut le lire : oui On peut le ecrire : oui

(9)

import java.io.File;

import java.io.IOException;

!

public class TestFile {

public static void main(String[] args) { File f=new File(args[0]);

f.mkdir();

} }

La classe File

$ java TestFile dir1

Julianas-Air:classes julianab$ ls

TestFile.class TestFile.java dir1 file1.txt

(10)

10

Flux

‣ Java possède une multitude de classes permettant la manipulation de flux de lecture/

écriture.

Deux categories de flux :

–  Les flux entrants pour la lecture 
 – InputStream pour lire des octets 
 – Reader pour lire des caractères 
 –  Les flux sortants pour l’écriture 


– OutputStream pour écrire des octets – Writer pour écrire des caractères 


(11)

11

Flux d’entrée

'MVY EFOUSÏF

*M BSSJWF TPVWFOU EFOSFHJTUSFS EFT EPOOÏFT EBOT EFT ĕDIJFST UFYUFT *M QFVU BMPST ÐUSF VUJMF EVUJ MJTFS VO PV VO QPVS FČFDUVFS MB MFDUVSF %BOT MFT FYFNQMFT TVJWBOUT PO DPOTJEÒSF VOF NBUSJDF 10 × 10 FOSFHJTUSÏF EBOT VO ĕDIJFS UFYUF MJHOF QBS MJHOF BWFD MFT DPMPOOFT TÏQBSÏFT QBS EFT FTQBDFT

‣ Lecture de caractères.

(12)

12

‣ La classe BufferReader permet de lire plus que un caractère à la fois, une ligne du ficher par exemple.

'MVY EFOUSÏF

*M BSSJWF TPVWFOU EFOSFHJTUSFS EFT EPOOÏFT EBOT EFT ĕDIJFST UFYUFT *M QFVU BMPST ÐUSF VUJMF EVUJ MJTFS VO PV VO QPVS FČFDUVFS MB MFDUVSF %BOT MFT FYFNQMFT TVJWBOUT PO DPOTJEÒSF VOF NBUSJDF 10 × 10 FOSFHJTUSÏF EBOT VO ĕDIJFS UFYUF MJHOF QBS MJHOF BWFD MFT DPMPOOFT TÏQBSÏFT QBS EFT FTQBDFT

Flux d’entrée

(13)

‣ Un flux de sortie est une instance d’une sous-classe de

OutputStream

.

‣ Chaque classe de flux de sortie a son propre mode d’écriture de données.

‣ ByteArrayOutputStream permet d’écrire des octets vers le flux de sortie;

‣ DataOutputStream permet d’écrire des types de données primitifs de Java vers le flux de sortie.

‣ FileOutputStream est utilisé pour écrire dans un fichier.

‣ ObjectOutputStream permet d’écrire des objets si ces objets implémentent les interfaces

Serializable

ou

Externalizable

.

‣ Writer représente un flux de sortie pour chaînes de caractères.

Flux de sortie

(14)

14

Flux de sortie

$IBQJUSF (FTUJPO EFT FOUSÏFTTPSUJFT TJNQMFT

0O QFVU ÏHBMFNFOU VUJMJTFS VO DPNNF VO QPVS ÏDSJSF EFT DIBÔOFT EF DBSBDUÒSFT EBOT VO ĕDIJFS BTTF[ TJNQMFNFOU %BOT MFYFNQMF TVJWBOU PO ÏDSJU VOF TÏSJF EF 10 MJHOFT EF 10 FOUJFST BMÏBUPJSFT TÏQBSÏT QBS EFT FTQBDFT EBOT VO ĕDIJFS QPVWBOU ÐUSF MV QBS MB DMBTTF

(15)

Flux de sortie

‣ La classe BufferWriter permet de écrire plus que un caractère à la fois, une ligne dans le ficher par exemple.

!

String ligne ;

int nombre = 123;

try{

FileWriter f = new FileWriter(destination);

BufferedWriter fichier = new BufferedWriter(f);

fichier.write("bonjour tout le monde");

fichier.newLine();

fichier.write("Nous sommes le "+ new Date());

fichier.write(", le nombre magique est " + nombre);

fichier.close();

} catch (Exception e) { e.printStackTrace();

}

(16)

16

Flux de sortie

(17)

Les fichiers à accès direct

(18)

18

Les fichiers à accès direct

(19)

Les fichiers à accès direct

Références

Documents relatifs

(ctxb+ctx).selist.[r]

ReserveVM: PROCEDURE [base:PageNurnber.. GetVMBounds: PUBLIC PROCEDURE RETURNS [VMBounds] - BEGIN. FOR ffvrnp INCREASING IN [ffvrnp .• lfvrnp] DO IF

AddressFromPage, DataSegmentHandle, DataSegmentObject, FileSegmentHandle. FileSegmentObject, Object, ObjectHandle, ObjectType, PageCount. PageNumber,

– et d’e↵ectuer les instructions n´ecessaires pour la cr´eation d’un objet de cette classe Les constructeurs sont appel´es quand on cr´ee (mot-cl´e new) un objet de cette

On ne peut pas utiliser l’opérateur « point » (.) sur les variables de la classe Chien ailleurs que dans la classe Chien

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java!. TD4 - Composition,

‣ Un tableau est une structure de données contenant un groupe d'éléments tous du même type. ‣ Le type des éléments peut être un type primitif ou

‣ boolean, byte, short, char, int, long, float et double, sont associées des classes Boolean, Byte, Short, Character, Integer, Long, Float et Double. ‣ Ces classes ont des