Lecture/Écriture de fichiers (I/O)
Sommaire Hiérarchie des données et fichier et Stream JAVA Création, lecture, écriture et mise à jour de fichiers (texte): Classes utilisées pour implémenter le JAVA Stream Autres fonctionnalités Référence: Deitel & Deitel, JAVA How to Program, 4 ième Édition, (Chapitre 16)
Objectifs Être capable de créer, lire, écrire et faire la mise à jour de fichiers Comprendre la hiérarchie de la classe Java Streams Être capable d’utiliser les classes FileInputStream et FileOutputStream Être capable d’utiliser les classes DataInputStream et DataOutputStream Être capable d’utiliser la classe File
Hiérarchie des données, fichier et Stream JAVA En JAVA un fichier est considéré comme une série d’octets. Un fichier peut contenir des données de format arbitraire Pour plusieurs OS, un fichier est une collection d’octets. Dans de tels OS, l’organisation des octets dans un fichier correspond à une vue abstraite des programmeurs d’applications
Hiérarchie des données, fichier et Stream JAVA I/O en JAVA (InputStream VS OutputStream)
Hiérarchie des données, fichier et Stream JAVA Hiérarchie (partielle) de classes du package java.io ……..
Hiérarchie des données, fichier et Stream JAVA InputStream et OutputStream (sous classes de Object) sont des classes abstraites définissant des méthodes permettant d’effectuer des I/O octet par octet Les programmes effectuent des I/O octet par octet avec FileInputStream (sous classe de InputStream) et FileOutputStream (sous classe de OutputStream) La lecture des données brutes (octets) est rapide mais non formatées. Souvent les programmes lisent les données en groupement d’octets, formant par exemple un int, un float, un double et ainsi de suite Les programmes Java peuvent alors utiliser diverses classes permettant les I/O dans des formats regroupés
Création, lecture, écriture et mise à jour de fichiers (texte) Un programme Java traite un stream d’octets comme une suite d’octets, qui se termine quand le système retourne un signal lorsque la fin du stream est atteint (end-of-file) Le programme peut détecter le “end-of-file” comme une exception, ou par la valeur retournée d’une méthode invoquée sur un objet traitant un stream Un programme Java ouvre un fichier en créant un objet et lui associant un stream d’octets Java peut aussi associer des streams d’octets à des dispositifs d’I/O device, Java crée automatiquement au démarrage d’un programme, trois objets stream associés chacun à un dispositif: System.in (clavier), System.out (écran) et System.err (écran)
Création, lecture, écriture et mise à jour de fichiers (texte) La classe File permet à un programme JAVA d’extraire des informations sur un fichier ou un répertoire, une instance de cette classe (objet), est donc une référence sur un fichier ……. // permet la validation du nom de fichier ……..
Création, lecture, écriture et mise à jour de fichiers (texte) La classe FileReader (sous classe de InputStreamReader) et la classe FileWriter (sous classe de OutputStreamWriter) permet la lecture et l’écriture de caractères dans un fichier // creation d’un objet FileWriter // verifier si le end of file est atteint
Création, lecture, écriture et mise à jour de fichiers (texte) La classe FileReader (sous classe de InputStreamReader) et la classe FileWriter (sous classe de OutputStreamWriter) permet la lecture et l’écriture de caractères dans un fichier // separation d’une ligne en tokens // ecriture des tokens modifies dans un fichier
Création, lecture, écriture et mise à jour de fichiers (texte): Voir exemple LectureEcritureFichierTexte
Création, lecture, écriture et mise à jour de fichiers (texte): Voir exemple LectureEcritureFichierTexte …..
Création, lecture, écriture et mise à jour de fichiers (texte): Voir exemple LectureEcritureFichierTexte …..
Création, lecture, écriture et mise à jour de fichiers (texte): Voir exemple LectureEcritureFichierTexte …..
Autres fonctionnalités Voir le site suivant (forum Stackoverflow): https://stackoverflow.com/questions/303913/java-reading-integers-from-a-file-into- an-array Permet de présenter d’autres fonctionnalités, comme la conversion de chaînes de caractères en objet de type int (entier) Exemple de programme JAVA qui plante lors de la lecture d’une ligne blanche dans un fichier générant une exception NumberFormatException ?
Autres fonctionnalités Voir le site suivant (forum Stackoverflow): https://stackoverflow.com/questions/303913/java-reading-integers-from-a-file-into- an-array La méthode hasNextInt() permet de corriger ce bug, retourne FALSE quand la prochaine chaîne de caractères ne correspond pas à un int
Autres fonctionnalités Voir le site suivant (forum Stackoverflow): https://stackoverflow.com/questions/303913/java-reading-integers-from-a-file-into- an-array Le try …. catch permet aussi de corriger ce bug, quand la méthode parseInt() génère une exception, la section catch est alors exécutée
Autres fonctionnalités Voir le site suivant (forum Stackoverflow): https://stackoverflow.com/questions/303913/java-reading-integers-from-a-file-into- an-array Utilisation des méthodes hasNext() et hasNextInt() permettent de valider la présence d’une chaîne de caractères et d’un int, et d’un ArrayList pour insérer les valeurs int converties avec la méthode add()