La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture 2005-12.

Présentations similaires


Présentation au sujet: "Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture 2005-12."— Transcription de la présentation:

1 Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture http://jmvanel.free.fr/ 2005-12

2 Plan ● Un exemple «simple» ● La classe File ● Notion de flot (stream); multiples sources et destination ● Les octets et les caractères ● La hiérarchie de InputStream et OutputStream: octets ● La hiérarchie de Reader et Writer: caractères ● Les encodages ● RandomAccessFile ● Sauver un graphe d’objets en XML : XMLEncoder ● Lire un fichier XML via SAX, via DOM

3 Un exemple «simple» Lire une ligne au clavier : BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String line = in.readLine(); Extrait de « Java in a Nutshell » par David Flanagan

4 La classe File ● Ne s'occupe que du nom du fichier, des permissions, des répertoires, etc ● Ne pas s'occupe pas du contenu

5 Notion de flot (stream); multiples sources et destination ● Voirhttp://java.sun.com/docs/books/tutorial/essential/io /overview.htmlhttp://java.sun.com/docs/books/tutorial/essential/io /overview.html ● Entrées sorties traitées uniformément: fichiers, réseau, périphériques, tampons mémoire

6 Les classes ● Diagrammes ● http://java.sun.com/docs/books/tutorial/essential/io/ove rview.html http://java.sun.com/docs/books/tutorial/essential/io/ove rview.html ● Tableau: ● http://java.sun.com/docs/books/tutorial/essential/io/data sinks.html http://java.sun.com/docs/books/tutorial/essential/io/data sinks.html

7 Méthodes de base InputStream int read() int read(byte cbuf[]) int read(byte cbuf[], int offset, int length) OutputStream int write(int c) int write(byte cbuf[]) int write(byte cbuf[], int offset, int length)

8 Les octets et les caractères ● Fichiers binaires: on utilise les E/S par octets : XXXStream ● Fichiers caractères: on utilise les E/S par caractères: XXXReader et XXXWriter

9 La hiérarchie de InputStream et OutputStream: octets

10 La hiérarchie de Reader et Writer: caractères

11 Enrobages (wrappers) ● Alias modèle de conception « décorateur » ● Exemple «simple» revisité BufferedReader in = new BufferedReader( new InputStreamReader( System.in)); ● Double enrobage – De InputStream à InputStreamReader – De InputStreamReader à BufferedReader

12 Enrobages 2 (wrappers) ● Le décorateur de base est FilterInputStream ● Voir le reste de la hiérarchie avec eclipse

13 Les encodages ● Sur 1 octet : – ASCII – iso-88-59-1, Cp1215,... – UTF-8 (multi-octets pour tout ce qui n’est pas ASCII ) ; commence par FFFE ● Sur 2 octets: UTF-16 ● Sur 4 octets: UTF-32 : Unicode Il faut avoir un éditeur de texte UTF-8, par exemple gvim http://www.vim.org http://www.vim.org :set fileencoding=iso-8859-1

14 Représentation interne encodages ● Classes – InputStreamReader – OutputStreamWriter ● Encodage indiqué dans le constructeur ● Voir dans le JDK: docs/guide/intl/encoding.doc.html la listes des encodages

15

16 RandomAccessFile En plus des méthodes normales: int skipBytes(int); // Moves the file pointer forward the specified number of bytes void seek(long); // Positions the file pointer just before the specified byte long getFilePointer() // Returns the current byte location of the file pointer

17 Sauver un graphe d’objets en XML : 1 - XMLEncoder String saveFileName = getSaveFileName(); XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream( saveFileName))); e.writeObject( testSpec ); e.close();

18 Sauver un graphe d’objets en XML : 2 - XMLDecoder Pour relire l'objet sauvé, il faut utiliser XMLDecoder : XMLDecoder d = new XMLDecoder( new BufferedInputStream( new FileInputStream( getSaveFileName()))); testSpec = (TestSpecification) d.readObject(); d.close();

19 Lire un fichier XML via SAX, via DOM ● Via SAX (Simple API for XML) – Implémenter ContentHandler – Le donner à un SAXParser – Lancer SAXParser.parse(monFichier) ● Via DOM Document doc = DocumentBuilderFactory.newInstance(). newDocumentBuilder().parse( " mon texte " );

20 Lire un fichier XML via SAX, via DOM ● Didacticiel chez Sun : ● Working with XML XML and the Document Object Model (DOM) http://java.sun.com/webservices/jaxp/dist/1.1/docs/tutor ial/TOC.html http://java.sun.com/webservices/jaxp/dist/1.1/docs/tutor ial/TOC.html


Télécharger ppt "Fichiers et entrées-sorties en Java File and Input-ouput in Java J.M. Vanel Conseil informatique, architecture 2005-12."

Présentations similaires


Annonces Google