Une introduction aux fichiers en Java
Chronologie : Une introduction aux fichiers en Java. Recherche parmi 300 000+ dissertationsPar francis4664 • 11 Décembre 2015 • Chronologie • 5 690 Mots (23 Pages) • 935 Vues
Une introduction aux fichiers en Java
Nous présentons ici comment JAVA traite les flux de données et les fichiers. Comme tout langage de programmation, JAVA permet de lire et d'écrire des données vers des fichiers, des connections réseaux ou même vers de zones de la mémoire.
Les flux (stream) et les fichiers
Nous allons voir comment recevoir une série d'octets ou comment envoyer une série d'octets et ce vers des fichiers ou d'autres types de connections. En effet, toutes les données qui entrent ou sortent de l'ordinateur sont à la limite des octets. En Java, on nomme input stream un objet duquel on pourra lire une série d'octets et on nomme output stream un objet vers lequel on pourra envoyer une série d'octets. Ces objets seront définis au moyen des super classes InputStream et OutputStream. Il existe aussi deux super classes nommées Writer et Reader qui permettent d'écrire ou de lire des caractères vers les streams.
Au démarrage de chaque programme, JAVA crée automatiquement trois stream : System.in (lecture en provenance du clavier), System.out (écriture vers l'écran) et System.err (s'utilise pour afficher les erreurs normalement vers l'écran). On peut rediriger ces stream au moyen des méthodes setIn(),setOut() et setErr().
En Java, chaque fichier est considéré comme une suite d'octets, un flux d'octets ou un stream. Chaque système d'exploitation aura sa propre technique pour indiquer la fin d'un fichier. En Windows, ce sera la combinaison de caractères Ctrl+z.
Un stream pointant sur un fichier pourra se présenter sous deux formes : soit on lit ou écrit un octet à la fois ou soit on le fait un caractère à la fois. Travailler un octet à la fois produira un fichier binaire alors qu'un caractère à la fois produira un fichier texte. Ainsi, le chiffre 7 sera sauvegardé sous la forme 111 en fichier binaire et le sera sous la forme 00000000 00110111 en fichier texte. L'écriture sous la forme de fichier texte nous permet ainsi de préserver les caractères entrés mais occupera plus d'espaces disque.
Il existe des classes pour manipuler les fichiers binaires : FileInputStream et FileOutputStream et des classes pour manipuler des fichiers texte : FileReader et FileWriter. Ces classes héritent respectivement des classes InputStream, OutputStream et des classes Reader et Writer.
Remarquez qu'il existe un objet différent pour la lecture et pour l'écriture dans le fichier.
Voici quelques pages qui indiquent la hiérarchie de ces classes en Java :
Class Hierarchy
• java.lang.Object
• java.io.Console (implements java.io.Flushable)
• java.io.File (implements java.lang.Comparable<T>, java.io.Serializable)
• java.io.FileDescriptor
• java.io.InputStream (implements java.io.Closeable)
• java.io.ByteArrayInputStream
• java.io.FileInputStream
• java.io.FilterInputStream
• java.io.BufferedInputStream
• java.io.DataInputStream (implements java.io.DataInput)
• java.io.LineNumberInputStream
• java.io.PushbackInputStream
• java.io.ObjectInputStream (implements java.io.ObjectInput, java.io.ObjectStreamConstants)
• java.io.PipedInputStream
• java.io.SequenceInputStream
• java.io.StringBufferInputStream
• java.io.ObjectInputStream.GetField
• java.io.ObjectOutputStream.PutField
• java.io.ObjectStreamClass (implements java.io.Serializable)
• java.io.ObjectStreamField (implements java.lang.Comparable<T>)
• java.io.OutputStream (implements java.io.Closeable, java.io.Flushable)
• java.io.ByteArrayOutputStream
• java.io.FileOutputStream
• java.io.FilterOutputStream
• java.io.BufferedOutputStream
• java.io.DataOutputStream (implements java.io.DataOutput)
• java.io.PrintStream (implements java.lang.Appendable, java.io.Closeable)
• java.io.ObjectOutputStream (implements java.io.ObjectOutput, java.io.ObjectStreamConstants)
• java.io.PipedOutputStream
• java.security.Permission (implements java.security.Guard, java.io.Serializable)
• java.security.BasicPermission (implements java.io.Serializable)
• java.io.SerializablePermission
• java.io.FilePermission (implements java.io.Serializable)
• java.io.RandomAccessFile (implements java.io.Closeable, java.io.DataInput, java.io.DataOutput)
• java.io.Reader (implements java.io.Closeable, java.lang.Readable)
• java.io.BufferedReader
• java.io.LineNumberReader
• java.io.CharArrayReader
• java.io.FilterReader
• java.io.PushbackReader
• java.io.InputStreamReader
• java.io.FileReader
• java.io.PipedReader
• java.io.StringReader
• java.io.StreamTokenizer
• java.lang.Throwable (implements java.io.Serializable)
• java.lang.Error
• java.io.IOError
• java.lang.Exception
• java.io.IOException
• java.io.CharConversionException
...