Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJean-Pierre Barbeau Modifié depuis plus de 8 années
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
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.