• Aucun résultat trouvé

INF 2 PROGRAMMATION ORIENTÉE OBJETAVANCÉE

N/A
N/A
Protected

Academic year: 2022

Partager "INF 2 PROGRAMMATION ORIENTÉE OBJETAVANCÉE"

Copied!
13
0
0

Texte intégral

(1)

PROGRAMMATION ORIENTÉE OBJET

AVANCÉE

Review Java

Flot des données

Gestion de fichiers

(2)

Plan de la séance

Plan

• Définition d’un flot de donnée

• API Stream

• Cycle de vie d’un flot

• Accéder au contenu d’un fichier

(3)

Flots de données : définitions

Stream ou flot de données

• Un stream est une abstraction représentant une séquence de données

• Les streams permettent l’échange de données entre le programme et des entités de différentes natures (un fichier, un ordinateur distant, une

application…)

• Définition d’un canal de communication

Les flots sont unidirectionnels

• Soit en entrée : source InputStream progr

• Soit en sortie : programme OutputStream

dest

(4)

Flots de données : définitions

• Les streams varient en fonction de la nature des données transportées

• Octets, caractères, objets…

Hiérarchie des flots

InputStream / OutputStream

Lecture / écriture binaires (octets)

• Méthodes read ( byte[] ) / write ( byte[] )

Reader / Writer

Lecture / écriture texte (caractères)

• Méthodes read ( char[] ) / write ( char[] )

+ sous-classes spécialisées

(5)

Flots de données : API Stream

Exemples de stream défini par l’api Java

Nature données Entrée Sortie

Byte ByteArrayInputStream ByteArrayOutputStream Fichier binaire FileInputStream FileOutputStream

Fichier texte FileReader FileWriter

Types primitifs DataInputStream DataOutputStream Buffer binaire BufferedInputStrea

m BufferedOutputStrea m

Buffer texte BufferedReader BufferedWriter

Objets ObjectInputStream ObjectOutputStream

(6)

Flots de données : cycle de vie

Cycle de vie d’un flot de données

Création (ouverture)

Accès

Lecture / Ecriture (Input) (output)

Fermeture (close)

Tout flot ouvert doit être

refermé

FileWriter writer = new

FileWriter("Hello.txt");

writer.write("Hello world !");

writer.close();

(7)

Flots de données : enchaînement

Les flots peuvent être combinés / enchaînés

• Un stream peut être construit à partir d’un autre stream

• Pas de mélange Input / Output : tjs unidirectionnels

• Exemple Data Buffered FileInput

readDouble

fichier

FileInputStream Accès ficher binaire

(read byte[]) BufferedInputStream

Accès par mémoire tampon (read byte[]) DataInputStream

Lecture types primitifs

(readDouble, readInt…)

(8)

Flots de données : enchaînement

Flots enchaînés

FileInput Buffered

Data readDouble

fichier

FileInputStream fin = new FileInputStream(filename);

BufferedInputStream bin = new BufferedInputStream(fin);

DataInputStream din = new DataInputStream(bin);

double d = din.readDouble();

fin.close();

(9)

Flots de données : File & Stream

Stream

• Abstraction permettant l’accès au contenu d’un flot de données

• Lecture / écrire d’un fichier

FileInputStream / FileOutputStream FIleReader / FileWriter

File

• Abstraction représentant un fichier auprès du système d’exploitation

• Accès à la description du fichier / répertoire

• Méthodes : existe, isDirectory, list, canRead,

canWrite, delete, getAbsolutePath, getName

(10)

Flots de données : File & Stream

Exemple : CopyFile

• Copie un fichier source vers un fichier destination

• Vérifications préliminaires avant la copie

• Si le fichier source existe et si le fichier destination n’existe pas

• Utilisation de la classe File

(11)

Flots de données : File & Stream

Exemple : CopyFile

• Copie un fichier source vers un fichier destination

• Vérifications préliminaires avant la copie

• Si le fichier source existe et si le fichier destination n’existe pas

• Utilisation de la classe File

(12)

Flots de données : File & Stream

Exemple : CopyFile

• Copie byte à byte d’un FileInputStream vers un FileOutputStream

• Traitement des exceptions : IOException

(13)

Flots de données : File & Stream

Exemple : CopyFile

• Noms des fichiers transmis par ligne de commande

• Capture des exceptions IOException

Références

Documents relatifs

une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des

L’interpréteur java permet d’exécuter une application écrite en langage java (autre qu’une applet), plus spécifiquement un fichier ClassName.class (i.e le java bytecodes). Par

• On peut restreindre le paramètre à une classe (ou une famille de classes) précise. … < T extends

sans le tableau Réutilisable quelque soit l’entrée des données. Réutilisable quelque soit l’entrée

• Le premier catch rencontré qui correspond à la classe d’exception levée est exécuté. • Tout bloc finally présent dans le parcours sera

• Usage des annotations pour indiquer les méthodes de test et autres

• Les dépendances indiquent le couplage (qui peut être faible) entre 2 classes.. • Réduction

• Lorsqu’il ne doit avoir qu’une et une seule instance d’une classe accessible à différents clients. • Lorsque cette instance unique peut être étendue et les clients