SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Chapitre 8 : Les Entrées / Sorties




                       MASTER PROFESSIONNEL
      NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS ET RESEAUX
                               (N2TR)



                                      Cours JAVA © FT
                                     Les Entrées / Sorties




Objectif :

        Ce chapitre vous permettra de reconnaitre les différentes classes
        d’entrée/sortie du langage JAVA et d’identifier leurs différentes
        méthodes. En plus de savoir comment les manipuler à traves quelques
        exemples.




                                                                              1
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



                                                          Sommaire
Présentation des classes :.............................................................................................................................. 3
   Les suffixes :............................................................................................................................................... 3
   Les préfixes : .............................................................................................................................................. 3
       Les flux : ................................................................................................................................................. 3
       Les filtres :.............................................................................................................................................. 4
   La classe Reader : ...................................................................................................................................... 5
   La classe Writer : ....................................................................................................................................... 5
   Les flux de caractères en lecture sur un fichier ......................................................................................... 6
   Les flux de caractères tamponnés en lecture avec un fichier : ................................................................. 6
   Les flux de caractères tamponnés en écriture avec un fichier : ............................................................... 7
   La classe PrintWriter :................................................................................................................................ 8
   La classe File : .......................................................................................................................................... 10




                                                                                                                                                                        2
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



Les échanges de données sont souvent réalisés à travers les flux d’entrées et sorties, ces échanges
peuvent être de nature multiples : un fichier, une socket réseau, un autre programme, etc ...

Dans le package java.io on retrouve les classes de lecture et d’écriture de données sur des
supports physiques .


Présentation des classes :

Le nom des classes se décompose en un préfixe et un suffixe.


Les suffixes :

 Il y a quatre suffixes possibles en fonction du type de flux (flux d'octets ou de caractères) et du
sens du flux (entrée ou sortie) :

                                                Flux d'octets                Flux de caractères

                Flux d'entrée                   InputStream                  Reader


                Flux de sortie                  OutputStream                 Writer




         les sous classes de Reader sont des types de flux en lecture sur des ensembles de caractères
         les sous classes de Writer sont des types de flux en écriture sur des ensembles de caractères
         les sous classes de InputStream sont des types de flux en lecture sur des ensembles d'octets
         les sous classes de OutputStream sont des types de flux en écriture sur des ensembles d'octets

Les préfixes :
Pour le préfixe, il faut distinguer les flux et les filtres.


Les flux :

                  Préfixe du flux                               source ou destination du flux
                  ByteArray                                     tableau d'octets en mémoire
                  CharArray                                     tableau de caractères en mémoire
                  File                                          fichier
                  Object                                        objet
                  Pipe                                          pipeline entre deux threads
                  String                                        chaîne de caractères



                                                                                                           3
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties


Les filtres :

    Type de                Préfixe de la classe       En entrée                             En sortie
    traitement
    Mise en tampon         Buffered                   Oui                            Oui
    Concaténation          Sequence                   Oui pour les flux              Non
    de flux                                           d'octets
    Conversion de          Data                       Oui pour les flux              Oui pour les flux
    données                                           d'octets                       d’octets
    Numérotation           LineNumber                 Oui pour les flux de           Non
    des lignes                                        caractères
    Lecture avec           PushBack                   Oui                            Non
    remise dans le
    flux des données
    Impression             Print                      Non                            Oui

    Sérialisation          Object                     Oui pour les flux              Oui pour les flux
                                                      d'octets                       d'octets
    Conversion             InputStream /              Oui pour les flux              Oui pour les flux
    octets/caractères      OutputStream               d'octets                       d'octets


       Buffered : ce type de filtre permet de mettre les données du flux dans un tampon. Il peut être utilisé en
        entrée et en sortie.
       Sequence : ce filtre permet de fusionner plusieurs flux.
       Data : ce type de flux permet de traiter les octets sous forme de type de données.
       LineNumber : ce filtre permet de numéroter les lignes contenues dans le flux.
       PushBack : ce filtre permet de remettre des données lues dans le flux.
       Print : ce filtre permet de réaliser des impressions formatées.
       Object : ce filtre est utilisé par la sérialisation.
       InputStream / OuputStream : ce filtre permet de convertir des octets en caractères.


Voici quelques classes du package java.io :



                                      Flux en lecture                        Flux en sortie
Flux de caractères                    BufferedReader                         BufferedWriter
                                      CharArrayReader                        CharArrayWriter
                                      FileReader                             FileWriter
                                      InputStreamReader                      OutputStreamWriter
                                      LineNumberReader                       PipedWriter
                                      PipedReader                            StringWriter
                                      PushbackReader
                                      StringReader
Flux d'octets                         BufferedInputStream                    BufferedOutputStream
                                      ByteArrayInputStream                   ByteArrayOutputStream
                                      DataInputStream                        DataOuputStream
                                      FileInputStream                        FileOutputStream
                                      ObjectInputStream                      ObjetOutputStream
                                      PipedInputStream                       PipedOutputStream
                                      PushbackInputStream                    PrintStream

                                                                                                                    4
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties


                                         SequenceInputStream

La classe Reader :

C’est la classe mère de toutes les méthodes de lecture des flux.

            Méthodes                                                Rôles
            boolean markSupported()                       indique si le flux supporte la possibilité de
                                                          marquer des positions
            boolean ready()                               indique si le flux est prêt à être lu
            close()                                       ferme le flux et libère les ressources qui lui
                                                          étaient associées
            int read()                                    renvoie le caractère lu ou −1 si la fin du flux
                                                          est atteinte.
            int read(char[])                              lire plusieurs caractères et les mettre dans un
                                                          tableau de caractères
            int read(char[], int, int)                    lire plusieurs caractères. Elle attend en
                                                          paramètre : un tableau de caractères
                                                          qui contiendra les caractères lus, l'indice du
                                                          premier élément du tableau qui
                                                          recevra le premier caractère et le nombre de
                                                          caractères à lire. Elle renvoie le
                                                          nombre de caractères lus ou −1 si aucun
                                                          caractère n'a été lu. Le tableau de
                                                          caractères contient les caractères lus.
            long skip(long)                               saute autant de caractères dans le flux que la
                                                          valeur fournie en paramètre.
                                                          Elle renvoie le nombre de caractères sautés.
            mark()                                        permet de marquer une position dans le flux
            reset()                                       retourne dans le flux à la dernière position
                                                          marquée


La classe Writer :

C’est la classe mère de toutes les méthodes de l’écriture des flux.

                 Méthode                   Rôle
                 close( )                  ferme le flux et libère les ressources qui lui étaient
                                           associées
                 write(int)                écrire le caractère en paramètre dans le flux.
                 write(char[])             écrire le tableau de caractères en paramètre dans le flux.
                 write(char[], int,        écrire plusieurs caractères. Elle attend en paramètres :
                 int)                      un tableau de caractères, l'indice du premier caractère
                                           dans le tableau à écrire et le nombre de caractères à
                                           écrire.
                 write(String)             écrire la chaîne de caractères en paramètre dans le flux
                 write(String, int,        écrire une portion d'une chaîne de caractères. Elle attend
                 int)                      en paramètre : une chaîne de caractères, l'indice du
                                           premier caractère dans la chaîne à écrire et le nombre de
                                           caractères à écrire.

                                                                                                            5
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties


Nous allons nous intéresser à la manipulation des entrées/sorties dans un fichier.

Commençons par la lecture du contenu d’un fichier :


Les flux de caractères en lecture sur un fichier

Il faut instancier un objet de la classe FileReader.


                         FileReader fichier = new FileReader("monfichier.txt");




Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode
close().

Il faut instancier un objet de la classe FileWriter qui hérite de la classe OuputStreamWriter.


                         FileWriter fichier = new FileWriter ("monfichier.dat");




Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode
close().


Les flux de caractères tamponnés en lecture avec un fichier :
Pour améliorer les performances des flux sur un fichier, la mise en tampon des données lues ou écrites permet de
traiter un ensemble de caractères représentant une ligne , plutôt que de traiter les données caractère par caractère. Le
nombre d'opérations est ainsi réduit.

Les classes BufferedReader et BufferedWriter permettent de gérer des flux de caractères tamponnés avec des
fichiers.

Il faut instancier un objet de la classe BufferedReader. Nous pouvons trouver :
      BufferedReader(Reader) : le paramètre fourni doit correspondre au flux à lire.
      BufferedReader(Reader, int) : l'entier en paramètre permet de préciser la taille du buffer. Il doit être positif
          sinon une exception de type IllegalArgumentException est levée.



             BufferedReader fichier = new BufferedReader(new FileReader("monfichier.txt"));




Il existe plusieurs méthodes de la classe BufferedReader héritées de la classe Reader qui permettent de lire un ou
plusieurs caractères dans le flux. Toutes ces méthodes peuvent lever une exception de type IOException.
Nous pouvons citer la méthode readLine().



                                                                                                                              6
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



        Méthode                                              Rôle
        String readLine()                                    lire une ligne de caractères dans le flux. Une
                                                             ligne est une suite de caractères qui se termine
                                                             par un retour chariot 'r' ou un saut de ligne 'n'
                                                             ou les deux.

Voici un exemple de la lecture de fichier :



                         import java.io.*;
                         public class TestBufferedReader
                                {
                                protected String source;
                                public TestBufferedReader(String source)
                                {
                                       this.source = source;
                                       lecture();
                                }

                                  public static void main(String args[])
                                  {
                                          New TestBufferedReader("source.txt");
                                  }
                                  private void lecture() {
                                  try {
                                          String ligne ;
                                          BufferedReader fichier = new
                                          BufferedReader(new FileReader(source));
                                          while ((ligne = fichier.readLine()) != null)
                                          {
                                          System.out.println(ligne);
                                      }
                                      fichier.close();
                                  }
                                  catch (Exception e)
                                    {
                                          e.printStackTrace();
                                  }
                                  }
                         }




Les flux de caractères tamponnés en écriture avec un fichier :
Il faut instancier un objet de la classe BufferedWriter. Cette classe possède plusieurs constructeurs :

        BufferedWriter(Writer) : le paramètre fourni doit correspondre au flux dans lequel les données sont écrites.
        BufferedWriter(Writer, int) : l'entier en paramètre permet de préciser la taille du buffer. Il doit être positif
         sinon une exception IllegalArgumentException est levée.


                    BufferedWriter fichier = new BufferedWriter( new FileWriter("monfichier.txt"));



                                                                                                                            7
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties


Il existe plusieurs méthodes de la classe BufferedWriter héritées de la classe Writer qui permettent de lire et gérer un
ou plusieurs caractères dans le flux.



                   Méthode                Rôle
                   Write( )               permet d’écrire des caractères dans le flux
                   flush( )               vide le tampon en écrivant les données dans le flux
                   newLine( )             écrire un séparateur de ligne dans le flux



Voici un exemple d’écriture à l’intérieur d’un fichier :


               import java.io.*;
               import java.util.*;

               public class TestBufferedWriter {
                      protected String destination;
                      public TestBufferedWriter(String destination) {
                             this.destination = destination;
                             traitement();
                      }

                        public static void main(String args[]) {
                                TestBufferedWriter("print.txt");
                        }

                        private void traitement() {
                               try {
                                      String ligne ;
                                      int nombre = 123;
                                      BufferedWriter fichier = new BufferedWriter(new
                                      FileWriter(destination));
                                      fichier.write("bonjour tout le monde");
                                      fichier.newLine();
                                      fichier.write("Nous sommes le "+ new Date());
                                      fichier.write(", le nombre magique est " + nombre);
                                      fichier.close();
                               }
                               catch (Exception e) {
                                      e.printStackTrace();
                               }
                        }
               }




La classe PrintWriter :

Cette classe permet d'écrire dans un flux des données formatées.

Cette classe possède plusieurs constructeurs :


                                                                                                                           8
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



Méthode                                         Rôle
PrintWriter(Writer)                             Le paramètre fourni précise le flux. Le tampon est automatiquement
                                                vidé.
PrintWriter(Writer, boolean)                    Le booléen permet de préciser si le tampon doit être
                                                automatiquement vidé.
PrintWriter(OutputStream)                       Le paramètre fourni précise le flux. Le tampon est automatiquement
                                                vidé.
PrintWriter(OutputStream, boolean)              Le booléen permet de préciser si le tampon doit être
                                                automatiquement vidé.


Exemple :


                  PrintWriter fichier = new PrintWriter( new FileWriter("monfichier.txt"));




Il existe de nombreuses méthodes de la classe PrintWriter qui permettent d'écrire un ou plusieurs caractères dans le
flux en les formatant. Les méthodes write() sont héritées de la classe Writer. Elle définit plusieurs méthodes pour
envoyer des données formatées dans le flux :



  Méthode                            Rôle
  print( )                           La méthode print accepte des données de différents types pour les convertir
                                     en caractères et les écrire dans le flux
  println()                          Cette méthode permet de terminer la ligne courante dans le flux en y écrivant
                                     un saut de ligne.
                                     Plusieurs méthodes println acceptent des données de différents types pour les
                                     convertir en caractères et les écrire dans le flux avec une fin de ligne.




                                                                                                                       9
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties


Exemple :

         import java.io.*;
         import java.util.*;
         public class TestPrintWriter
         {
                  protected String destination;

                  public TestPrintWriter(String destination) {
                           this.destination = destination;
                           traitement();
                  }
                  public static void main(String args[]) {
                           new TestPrintWriter("print.txt");
                  }
                  private void traitement() {
                           try {
                                     String ligne ;
                                     int nombre = 123;
                                     PrintWriter fichier = new PrintWriter(new FileWriter(destination));
                                     fichier.println("bonjour tout le monde");
                                     fichier.println("Nous sommes le "+ new Date());
                                     fichier.println("le nombre magique est " + nombre);
                                     fichier.close();
                           } catch (Exception e) {
                                     e.printStackTrace();
                           }
                  }
         }




La classe File :

Les fichiers et les répertoires sont encapsulés dans la classe File du package java.io. Il n'existe pas de classe pour
traiter les répertoires car, ils sont considérés comme des fichiers. Une instance de la classe File est une représentation
logique d'un fichier ou d'un répertoire qui peut ne pas exister physiquement sur le disque.

Si le fichier ou le répertoire existe, de nombreuses méthodes de la classe File permettent d'obtenir des informations
sur le fichier. Sinon plusieurs méthodes permettent de créer des fichiers ou des répertoires. Voici une liste des
principales méthodes :




                                                                                                                             10
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties




    Méthode                                      Rôle
    boolean canRead()                            indique si le fichier peut être lu
    boolean canWrite()                           indique si le fichier peut être modifié
    boolean createNewFile()                      création d'un nouveau fichier vide
    File reateTempFile(String, String)           création d'un nouveau fichier dans le répertoire par défaut
                                                 des fichiers temporaires. Les deux arguments sont le préfixe
                                                 et le suffixe du fichier.
    File createTempFile(String,                  création d'un nouveau fichier temporaire. Les trois arguments
    String,File)                                 sont le préfixe et le suffixe du fichier et le répertoire.

    boolean delete()                             détruire le fichier ou le répertoire. Le booléen indique le succès
                                                 de l'opération
    deleteOnExit()                               demande la suppression du fichier à l'arrêt de la JVM
    boolean exists()                             indique si le fichier existe physiquement
    String getAbsolutePath()                     renvoie le chemin absolu du fichier
    String getPath                               renvoie le chemin du fichier
    boolean isAbsolute()                         indique si le chemin est absolu
    boolean isDirectory()                        indique si le fichier est un répertoire
    boolean isFile()                             indique si l'objet représente un fichier
    long length()                                renvoie la longueur du fichier
    String[] list()                              renvoie la liste des fichiers et répertoire contenu dans le
                                                 répertoire
    boolean mkdir()                              création du répertoire
    boolean mkdirs()                             création du répertoire avec création des répertoires manquants
                                                 dans l'arborescence du chemin
    boolean renameTo()                           renommer le fichier



Depuis la version 1.2 du J.D.K., de nombreuses fonctionnalités ont été ajoutées à cette classe telles que :

        la création de fichiers temporaires (createNewFile, createTempFile, deleteOnExit)
        la gestion des attributs "cachés" et "lecture seule" (isHidden, isReadOnly)
        des méthodes qui renvoient des objets de type File au lieu de type String ( getParentFile, getAbsoluteFile,
         getCanonicalFile, listFiles)
        une méthode qui renvoie le fichier sous forme d'URL (toURL)

Voici un exemple de la manipulation des fichiers :




                                                                                                                       11
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



              import java.io.*;
              public class TestFile {
                      protected String nomFichier;
                      protected File fichier;

                       public TestFile(String nomFichier) {
                               this.nomFichier = nomFichier;
                               fichier = new File(nomFichier);
                       traitement();
                       }

                       public static void main(String args[]) {
                               new TestFile(args[0]);
                       }

                       private void traitement() {

                               if (!fichier.exists()) {
                                        System.out.println("le fichier "+nomFichier+"n'existe pas");
                                        System.exit(1);
                               }
                               System.out.println(" Nom du fichier : "+fichier.getName());
                               System.out.println(" Chemin du fichier : "+fichier.getPath());
                               System.out.println(" Chemin absolu : "+fichier.getAbsolutePath());
                               System.out.println(" Droit de lecture : "+fichier.canRead());
                               System.out.println(" Droite d'ecriture : "+fichier.canWrite());

                               if (fichier.isDirectory() ) {
                                        System.out.println(" contenu du repertoire ");
                                        String fichiers[] = fichier.list();

                                       for(int i = 0; i > fichiers.length; i++)
                                        System.out.println(" "+fichiers[i]);
                               }
                       }
              }




Voici un second exemple qui montre la manipulation des fichiers :




                                                                                                       12
Riadh BOUHOUCHI
Chapitre 8 : Les Entrées / Sorties



   import java.io.*;

   public class TestFile_12 {
          protected String nomFichier;
          protected File fichier;

           public TestFile_12(String nomFichier) {
                  this.nomFichier = nomFichier;
                  fichier = new File(nomFichier);
                  traitement();
           }

           public static void main(String args[]) {
                  new TestFile_12(args[0]);
           }

           private void traitement() {

                   if (!fichier.exists()) {
                          System.out.println("le fichier "+nomFichier+"n'existe pas");
                          System.exit(1);
                   }

                   System.out.println("   Nom du fichier : "+fichier.getName());
                   System.out.println("   Chemin du fichier : "+fichier.getPath());
                   System.out.println("   Chemin absolu : "+fichier.getAbsolutePath());
                   System.out.println("   Droit de lecture : "+fichier.canRead());
                   System.out.println("   Droite d'ecriture : "+fichier.canWrite());

                   if (fichier.isDirectory() )
                   {
                          System.out.println(" contenu du repertoire ");
                          File fichiers[] = fichier.listFiles();
                          for(int i = 0; i > fichiers.length; i++)
                          {
                                 if (fichiers[i].isDirectory())
                                 System.out.println( " ["+fichiers[i].getName()+"]");
                                 else
                                 System.out.println( " "+fichiers[i].getName());
                          }
                   }
           }
   }




                                                                                          13
Riadh BOUHOUCHI

Weitere ähnliche Inhalte

Was ist angesagt?

Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Mamadou Oury Ba
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Introduction java
Introduction javaIntroduction java
Introduction javaFouad Root
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Les bases du langage java
Les bases du langage javaLes bases du langage java
Les bases du langage javakrymo
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz Darouichi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Programmation des Threads en java
Programmation des Threads en javaProgrammation des Threads en java
Programmation des Threads en javaEzéquiel Tsagué
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylistHoussem Hamrouni
 

Was ist angesagt? (20)

Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Introduction java
Introduction javaIntroduction java
Introduction java
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Les bases du langage java
Les bases du langage javaLes bases du langage java
Les bases du langage java
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
JAVA Chapitre4
JAVA Chapitre4JAVA Chapitre4
JAVA Chapitre4
 
Language java
Language javaLanguage java
Language java
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Exceptions
ExceptionsExceptions
Exceptions
 
Threads
ThreadsThreads
Threads
 
Apprentissage du java
Apprentissage du javaApprentissage du java
Apprentissage du java
 
Programmation des Threads en java
Programmation des Threads en javaProgrammation des Threads en java
Programmation des Threads en java
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
 

Andere mochten auch

Werde wer du bist anhand der Gita
Werde wer du bist anhand der GitaWerde wer du bist anhand der Gita
Werde wer du bist anhand der Gitalezfez
 
Edr banque
Edr banqueEdr banque
Edr banquemahdiweb
 
Le premier Trophée Innovation où les sponsors passent à l'acte
Le premier Trophée Innovation où les sponsors passent à l'acteLe premier Trophée Innovation où les sponsors passent à l'acte
Le premier Trophée Innovation où les sponsors passent à l'acteBertrand Petit
 
Surveillance Amazon EC2 infrastructure (french)
Surveillance Amazon EC2 infrastructure (french) Surveillance Amazon EC2 infrastructure (french)
Surveillance Amazon EC2 infrastructure (french) Sergio Loureiro
 
Ilja Hauß: "Der Enterprise 2.0 Irrtum"
Ilja Hauß: "Der Enterprise 2.0 Irrtum"Ilja Hauß: "Der Enterprise 2.0 Irrtum"
Ilja Hauß: "Der Enterprise 2.0 Irrtum"migruening
 
Innocherche CES las-vegas Janvier 2011
Innocherche  CES  las-vegas Janvier 2011Innocherche  CES  las-vegas Janvier 2011
Innocherche CES las-vegas Janvier 2011Bertrand Petit
 
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARA
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARAEXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARA
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARAfrauderci
 
Tome 1 : Tourisme culture
Tome 1 : Tourisme cultureTome 1 : Tourisme culture
Tome 1 : Tourisme cultureparoles d'élus
 
Ma ville .meknes
Ma ville   .meknesMa ville   .meknes
Ma ville .meknesmerico2
 
Michail sergejewitsch gorbatschow
Michail sergejewitsch gorbatschowMichail sergejewitsch gorbatschow
Michail sergejewitsch gorbatschowEffort Mark
 
La participation associative au regard des temps sociaux
La participation associative au regard des temps sociauxLa participation associative au regard des temps sociaux
La participation associative au regard des temps sociauxChristophe Lemesre
 
Ausgabe 1/2 2015
Ausgabe 1/2 2015Ausgabe 1/2 2015
Ausgabe 1/2 2015Roland Rupp
 
Evaluatie CA 2 IPSS SPF Secu
Evaluatie CA 2 IPSS SPF SecuEvaluatie CA 2 IPSS SPF Secu
Evaluatie CA 2 IPSS SPF SecuAmaury Legrain
 

Andere mochten auch (20)

2011 05 12 09-45 top_soft
2011 05 12 09-45 top_soft2011 05 12 09-45 top_soft
2011 05 12 09-45 top_soft
 
Tecnicas de estudio
Tecnicas de estudioTecnicas de estudio
Tecnicas de estudio
 
Werde wer du bist anhand der Gita
Werde wer du bist anhand der GitaWerde wer du bist anhand der Gita
Werde wer du bist anhand der Gita
 
Edr banque
Edr banqueEdr banque
Edr banque
 
Le premier Trophée Innovation où les sponsors passent à l'acte
Le premier Trophée Innovation où les sponsors passent à l'acteLe premier Trophée Innovation où les sponsors passent à l'acte
Le premier Trophée Innovation où les sponsors passent à l'acte
 
Brochure Eastrategies
Brochure EastrategiesBrochure Eastrategies
Brochure Eastrategies
 
Minou Kiki
Minou KikiMinou Kiki
Minou Kiki
 
Catalog Parchet Laminat HDM Elesgo Germania
Catalog Parchet Laminat HDM Elesgo GermaniaCatalog Parchet Laminat HDM Elesgo Germania
Catalog Parchet Laminat HDM Elesgo Germania
 
1645 koch abo
1645 koch abo1645 koch abo
1645 koch abo
 
Surveillance Amazon EC2 infrastructure (french)
Surveillance Amazon EC2 infrastructure (french) Surveillance Amazon EC2 infrastructure (french)
Surveillance Amazon EC2 infrastructure (french)
 
Ilja Hauß: "Der Enterprise 2.0 Irrtum"
Ilja Hauß: "Der Enterprise 2.0 Irrtum"Ilja Hauß: "Der Enterprise 2.0 Irrtum"
Ilja Hauß: "Der Enterprise 2.0 Irrtum"
 
Innocherche CES las-vegas Janvier 2011
Innocherche  CES  las-vegas Janvier 2011Innocherche  CES  las-vegas Janvier 2011
Innocherche CES las-vegas Janvier 2011
 
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARA
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARAEXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARA
EXEMPLES FRAUDE ELECTORALE COTE D IVOIRE OUATTARA
 
Auour 2016
Auour 2016Auour 2016
Auour 2016
 
Tome 1 : Tourisme culture
Tome 1 : Tourisme cultureTome 1 : Tourisme culture
Tome 1 : Tourisme culture
 
Ma ville .meknes
Ma ville   .meknesMa ville   .meknes
Ma ville .meknes
 
Michail sergejewitsch gorbatschow
Michail sergejewitsch gorbatschowMichail sergejewitsch gorbatschow
Michail sergejewitsch gorbatschow
 
La participation associative au regard des temps sociaux
La participation associative au regard des temps sociauxLa participation associative au regard des temps sociaux
La participation associative au regard des temps sociaux
 
Ausgabe 1/2 2015
Ausgabe 1/2 2015Ausgabe 1/2 2015
Ausgabe 1/2 2015
 
Evaluatie CA 2 IPSS SPF Secu
Evaluatie CA 2 IPSS SPF SecuEvaluatie CA 2 IPSS SPF Secu
Evaluatie CA 2 IPSS SPF Secu
 

Ähnlich wie JAVA Chapitre8

Entrees sorties
Entrees sortiesEntrees sorties
Entrees sortiesyazidds2
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfMadaniAhlem2
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Les entrées sorties
Les entrées sortiesLes entrées sorties
Les entrées sortiesJihed Kaouech
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdfAboubacarDiarra10
 
Le système d’E/S en Java
Le système d’E/S en JavaLe système d’E/S en Java
Le système d’E/S en JavaKorteby Farouk
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJosé Paumard
 
Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Marc Maisonneuve
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Véronique Gambier
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Véronique Gambier
 
Panorama des logiciels de gestion de références bibliographiques
Panorama des logiciels de gestion de références bibliographiquesPanorama des logiciels de gestion de références bibliographiques
Panorama des logiciels de gestion de références bibliographiquesURFIST de Paris
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Pythonyboussard
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 
Formation java script
Formation java scriptFormation java script
Formation java scriptRomdhani Asma
 

Ähnlich wie JAVA Chapitre8 (20)

Entrees sorties
Entrees sortiesEntrees sorties
Entrees sorties
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdf
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Flowtype
FlowtypeFlowtype
Flowtype
 
Les entrées sorties
Les entrées sortiesLes entrées sorties
Les entrées sorties
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdf
 
Le système d’E/S en Java
Le système d’E/S en JavaLe système d’E/S en Java
Le système d’E/S en Java
 
Formation python
Formation pythonFormation python
Formation python
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
 
Ch02
Ch02Ch02
Ch02
 
Panorama des logiciels de gestion de références bibliographiques
Panorama des logiciels de gestion de références bibliographiquesPanorama des logiciels de gestion de références bibliographiques
Panorama des logiciels de gestion de références bibliographiques
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
IEEExplore
IEEExploreIEEExplore
IEEExplore
 
Formation java script
Formation java scriptFormation java script
Formation java script
 
XML Xpath & XSLT
XML  Xpath & XSLTXML  Xpath & XSLT
XML Xpath & XSLT
 

Mehr von Mohamed Ferchichi

Mehr von Mohamed Ferchichi (10)

JAVA Chapitre5
JAVA Chapitre5JAVA Chapitre5
JAVA Chapitre5
 
JAVA Chapitre3
JAVA Chapitre3JAVA Chapitre3
JAVA Chapitre3
 
JAVA Chapitre2
JAVA Chapitre2JAVA Chapitre2
JAVA Chapitre2
 
JAVA Chapitre1
JAVA Chapitre1 JAVA Chapitre1
JAVA Chapitre1
 
Résumé sur l’utilisation du système unix
Résumé sur l’utilisation du système unixRésumé sur l’utilisation du système unix
Résumé sur l’utilisation du système unix
 
Parti 2 utilitaires pour fichiers
Parti 2 utilitaires pour fichiersParti 2 utilitaires pour fichiers
Parti 2 utilitaires pour fichiers
 
Parti 1 concepts de base
Parti 1 concepts de baseParti 1 concepts de base
Parti 1 concepts de base
 
Trame mic
Trame micTrame mic
Trame mic
 
Cours gestion et economie 1
Cours gestion et economie 1Cours gestion et economie 1
Cours gestion et economie 1
 
Traitement de signal 1
Traitement de signal 1Traitement de signal 1
Traitement de signal 1
 

Kürzlich hochgeladen

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 

Kürzlich hochgeladen (20)

Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 

JAVA Chapitre8

  • 1. Chapitre 8 : Les Entrées / Sorties MASTER PROFESSIONNEL NOUVELLES TECHNOLOGIES DES TELECOMMUNICATIONS ET RESEAUX (N2TR) Cours JAVA © FT Les Entrées / Sorties Objectif : Ce chapitre vous permettra de reconnaitre les différentes classes d’entrée/sortie du langage JAVA et d’identifier leurs différentes méthodes. En plus de savoir comment les manipuler à traves quelques exemples. 1 Riadh BOUHOUCHI
  • 2. Chapitre 8 : Les Entrées / Sorties Sommaire Présentation des classes :.............................................................................................................................. 3 Les suffixes :............................................................................................................................................... 3 Les préfixes : .............................................................................................................................................. 3 Les flux : ................................................................................................................................................. 3 Les filtres :.............................................................................................................................................. 4 La classe Reader : ...................................................................................................................................... 5 La classe Writer : ....................................................................................................................................... 5 Les flux de caractères en lecture sur un fichier ......................................................................................... 6 Les flux de caractères tamponnés en lecture avec un fichier : ................................................................. 6 Les flux de caractères tamponnés en écriture avec un fichier : ............................................................... 7 La classe PrintWriter :................................................................................................................................ 8 La classe File : .......................................................................................................................................... 10 2 Riadh BOUHOUCHI
  • 3. Chapitre 8 : Les Entrées / Sorties Les échanges de données sont souvent réalisés à travers les flux d’entrées et sorties, ces échanges peuvent être de nature multiples : un fichier, une socket réseau, un autre programme, etc ... Dans le package java.io on retrouve les classes de lecture et d’écriture de données sur des supports physiques . Présentation des classes : Le nom des classes se décompose en un préfixe et un suffixe. Les suffixes : Il y a quatre suffixes possibles en fonction du type de flux (flux d'octets ou de caractères) et du sens du flux (entrée ou sortie) : Flux d'octets Flux de caractères Flux d'entrée InputStream Reader Flux de sortie OutputStream Writer  les sous classes de Reader sont des types de flux en lecture sur des ensembles de caractères  les sous classes de Writer sont des types de flux en écriture sur des ensembles de caractères  les sous classes de InputStream sont des types de flux en lecture sur des ensembles d'octets  les sous classes de OutputStream sont des types de flux en écriture sur des ensembles d'octets Les préfixes : Pour le préfixe, il faut distinguer les flux et les filtres. Les flux : Préfixe du flux source ou destination du flux ByteArray tableau d'octets en mémoire CharArray tableau de caractères en mémoire File fichier Object objet Pipe pipeline entre deux threads String chaîne de caractères 3 Riadh BOUHOUCHI
  • 4. Chapitre 8 : Les Entrées / Sorties Les filtres : Type de Préfixe de la classe En entrée En sortie traitement Mise en tampon Buffered Oui Oui Concaténation Sequence Oui pour les flux Non de flux d'octets Conversion de Data Oui pour les flux Oui pour les flux données d'octets d’octets Numérotation LineNumber Oui pour les flux de Non des lignes caractères Lecture avec PushBack Oui Non remise dans le flux des données Impression Print Non Oui Sérialisation Object Oui pour les flux Oui pour les flux d'octets d'octets Conversion InputStream / Oui pour les flux Oui pour les flux octets/caractères OutputStream d'octets d'octets  Buffered : ce type de filtre permet de mettre les données du flux dans un tampon. Il peut être utilisé en entrée et en sortie.  Sequence : ce filtre permet de fusionner plusieurs flux.  Data : ce type de flux permet de traiter les octets sous forme de type de données.  LineNumber : ce filtre permet de numéroter les lignes contenues dans le flux.  PushBack : ce filtre permet de remettre des données lues dans le flux.  Print : ce filtre permet de réaliser des impressions formatées.  Object : ce filtre est utilisé par la sérialisation.  InputStream / OuputStream : ce filtre permet de convertir des octets en caractères. Voici quelques classes du package java.io : Flux en lecture Flux en sortie Flux de caractères BufferedReader BufferedWriter CharArrayReader CharArrayWriter FileReader FileWriter InputStreamReader OutputStreamWriter LineNumberReader PipedWriter PipedReader StringWriter PushbackReader StringReader Flux d'octets BufferedInputStream BufferedOutputStream ByteArrayInputStream ByteArrayOutputStream DataInputStream DataOuputStream FileInputStream FileOutputStream ObjectInputStream ObjetOutputStream PipedInputStream PipedOutputStream PushbackInputStream PrintStream 4 Riadh BOUHOUCHI
  • 5. Chapitre 8 : Les Entrées / Sorties SequenceInputStream La classe Reader : C’est la classe mère de toutes les méthodes de lecture des flux. Méthodes Rôles boolean markSupported() indique si le flux supporte la possibilité de marquer des positions boolean ready() indique si le flux est prêt à être lu close() ferme le flux et libère les ressources qui lui étaient associées int read() renvoie le caractère lu ou −1 si la fin du flux est atteinte. int read(char[]) lire plusieurs caractères et les mettre dans un tableau de caractères int read(char[], int, int) lire plusieurs caractères. Elle attend en paramètre : un tableau de caractères qui contiendra les caractères lus, l'indice du premier élément du tableau qui recevra le premier caractère et le nombre de caractères à lire. Elle renvoie le nombre de caractères lus ou −1 si aucun caractère n'a été lu. Le tableau de caractères contient les caractères lus. long skip(long) saute autant de caractères dans le flux que la valeur fournie en paramètre. Elle renvoie le nombre de caractères sautés. mark() permet de marquer une position dans le flux reset() retourne dans le flux à la dernière position marquée La classe Writer : C’est la classe mère de toutes les méthodes de l’écriture des flux. Méthode Rôle close( ) ferme le flux et libère les ressources qui lui étaient associées write(int) écrire le caractère en paramètre dans le flux. write(char[]) écrire le tableau de caractères en paramètre dans le flux. write(char[], int, écrire plusieurs caractères. Elle attend en paramètres : int) un tableau de caractères, l'indice du premier caractère dans le tableau à écrire et le nombre de caractères à écrire. write(String) écrire la chaîne de caractères en paramètre dans le flux write(String, int, écrire une portion d'une chaîne de caractères. Elle attend int) en paramètre : une chaîne de caractères, l'indice du premier caractère dans la chaîne à écrire et le nombre de caractères à écrire. 5 Riadh BOUHOUCHI
  • 6. Chapitre 8 : Les Entrées / Sorties Nous allons nous intéresser à la manipulation des entrées/sorties dans un fichier. Commençons par la lecture du contenu d’un fichier : Les flux de caractères en lecture sur un fichier Il faut instancier un objet de la classe FileReader. FileReader fichier = new FileReader("monfichier.txt"); Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode close(). Il faut instancier un objet de la classe FileWriter qui hérite de la classe OuputStreamWriter. FileWriter fichier = new FileWriter ("monfichier.dat"); Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode close(). Les flux de caractères tamponnés en lecture avec un fichier : Pour améliorer les performances des flux sur un fichier, la mise en tampon des données lues ou écrites permet de traiter un ensemble de caractères représentant une ligne , plutôt que de traiter les données caractère par caractère. Le nombre d'opérations est ainsi réduit. Les classes BufferedReader et BufferedWriter permettent de gérer des flux de caractères tamponnés avec des fichiers. Il faut instancier un objet de la classe BufferedReader. Nous pouvons trouver :  BufferedReader(Reader) : le paramètre fourni doit correspondre au flux à lire.  BufferedReader(Reader, int) : l'entier en paramètre permet de préciser la taille du buffer. Il doit être positif sinon une exception de type IllegalArgumentException est levée. BufferedReader fichier = new BufferedReader(new FileReader("monfichier.txt")); Il existe plusieurs méthodes de la classe BufferedReader héritées de la classe Reader qui permettent de lire un ou plusieurs caractères dans le flux. Toutes ces méthodes peuvent lever une exception de type IOException. Nous pouvons citer la méthode readLine(). 6 Riadh BOUHOUCHI
  • 7. Chapitre 8 : Les Entrées / Sorties Méthode Rôle String readLine() lire une ligne de caractères dans le flux. Une ligne est une suite de caractères qui se termine par un retour chariot 'r' ou un saut de ligne 'n' ou les deux. Voici un exemple de la lecture de fichier : import java.io.*; public class TestBufferedReader { protected String source; public TestBufferedReader(String source) { this.source = source; lecture(); } public static void main(String args[]) { New TestBufferedReader("source.txt"); } private void lecture() { try { String ligne ; BufferedReader fichier = new BufferedReader(new FileReader(source)); while ((ligne = fichier.readLine()) != null) { System.out.println(ligne); } fichier.close(); } catch (Exception e) { e.printStackTrace(); } } } Les flux de caractères tamponnés en écriture avec un fichier : Il faut instancier un objet de la classe BufferedWriter. Cette classe possède plusieurs constructeurs :  BufferedWriter(Writer) : le paramètre fourni doit correspondre au flux dans lequel les données sont écrites.  BufferedWriter(Writer, int) : l'entier en paramètre permet de préciser la taille du buffer. Il doit être positif sinon une exception IllegalArgumentException est levée. BufferedWriter fichier = new BufferedWriter( new FileWriter("monfichier.txt")); 7 Riadh BOUHOUCHI
  • 8. Chapitre 8 : Les Entrées / Sorties Il existe plusieurs méthodes de la classe BufferedWriter héritées de la classe Writer qui permettent de lire et gérer un ou plusieurs caractères dans le flux. Méthode Rôle Write( ) permet d’écrire des caractères dans le flux flush( ) vide le tampon en écrivant les données dans le flux newLine( ) écrire un séparateur de ligne dans le flux Voici un exemple d’écriture à l’intérieur d’un fichier : import java.io.*; import java.util.*; public class TestBufferedWriter { protected String destination; public TestBufferedWriter(String destination) { this.destination = destination; traitement(); } public static void main(String args[]) { TestBufferedWriter("print.txt"); } private void traitement() { try { String ligne ; int nombre = 123; BufferedWriter fichier = new BufferedWriter(new FileWriter(destination)); fichier.write("bonjour tout le monde"); fichier.newLine(); fichier.write("Nous sommes le "+ new Date()); fichier.write(", le nombre magique est " + nombre); fichier.close(); } catch (Exception e) { e.printStackTrace(); } } } La classe PrintWriter : Cette classe permet d'écrire dans un flux des données formatées. Cette classe possède plusieurs constructeurs : 8 Riadh BOUHOUCHI
  • 9. Chapitre 8 : Les Entrées / Sorties Méthode Rôle PrintWriter(Writer) Le paramètre fourni précise le flux. Le tampon est automatiquement vidé. PrintWriter(Writer, boolean) Le booléen permet de préciser si le tampon doit être automatiquement vidé. PrintWriter(OutputStream) Le paramètre fourni précise le flux. Le tampon est automatiquement vidé. PrintWriter(OutputStream, boolean) Le booléen permet de préciser si le tampon doit être automatiquement vidé. Exemple : PrintWriter fichier = new PrintWriter( new FileWriter("monfichier.txt")); Il existe de nombreuses méthodes de la classe PrintWriter qui permettent d'écrire un ou plusieurs caractères dans le flux en les formatant. Les méthodes write() sont héritées de la classe Writer. Elle définit plusieurs méthodes pour envoyer des données formatées dans le flux : Méthode Rôle print( ) La méthode print accepte des données de différents types pour les convertir en caractères et les écrire dans le flux println() Cette méthode permet de terminer la ligne courante dans le flux en y écrivant un saut de ligne. Plusieurs méthodes println acceptent des données de différents types pour les convertir en caractères et les écrire dans le flux avec une fin de ligne. 9 Riadh BOUHOUCHI
  • 10. Chapitre 8 : Les Entrées / Sorties Exemple : import java.io.*; import java.util.*; public class TestPrintWriter { protected String destination; public TestPrintWriter(String destination) { this.destination = destination; traitement(); } public static void main(String args[]) { new TestPrintWriter("print.txt"); } private void traitement() { try { String ligne ; int nombre = 123; PrintWriter fichier = new PrintWriter(new FileWriter(destination)); fichier.println("bonjour tout le monde"); fichier.println("Nous sommes le "+ new Date()); fichier.println("le nombre magique est " + nombre); fichier.close(); } catch (Exception e) { e.printStackTrace(); } } } La classe File : Les fichiers et les répertoires sont encapsulés dans la classe File du package java.io. Il n'existe pas de classe pour traiter les répertoires car, ils sont considérés comme des fichiers. Une instance de la classe File est une représentation logique d'un fichier ou d'un répertoire qui peut ne pas exister physiquement sur le disque. Si le fichier ou le répertoire existe, de nombreuses méthodes de la classe File permettent d'obtenir des informations sur le fichier. Sinon plusieurs méthodes permettent de créer des fichiers ou des répertoires. Voici une liste des principales méthodes : 10 Riadh BOUHOUCHI
  • 11. Chapitre 8 : Les Entrées / Sorties Méthode Rôle boolean canRead() indique si le fichier peut être lu boolean canWrite() indique si le fichier peut être modifié boolean createNewFile() création d'un nouveau fichier vide File reateTempFile(String, String) création d'un nouveau fichier dans le répertoire par défaut des fichiers temporaires. Les deux arguments sont le préfixe et le suffixe du fichier. File createTempFile(String, création d'un nouveau fichier temporaire. Les trois arguments String,File) sont le préfixe et le suffixe du fichier et le répertoire. boolean delete() détruire le fichier ou le répertoire. Le booléen indique le succès de l'opération deleteOnExit() demande la suppression du fichier à l'arrêt de la JVM boolean exists() indique si le fichier existe physiquement String getAbsolutePath() renvoie le chemin absolu du fichier String getPath renvoie le chemin du fichier boolean isAbsolute() indique si le chemin est absolu boolean isDirectory() indique si le fichier est un répertoire boolean isFile() indique si l'objet représente un fichier long length() renvoie la longueur du fichier String[] list() renvoie la liste des fichiers et répertoire contenu dans le répertoire boolean mkdir() création du répertoire boolean mkdirs() création du répertoire avec création des répertoires manquants dans l'arborescence du chemin boolean renameTo() renommer le fichier Depuis la version 1.2 du J.D.K., de nombreuses fonctionnalités ont été ajoutées à cette classe telles que :  la création de fichiers temporaires (createNewFile, createTempFile, deleteOnExit)  la gestion des attributs "cachés" et "lecture seule" (isHidden, isReadOnly)  des méthodes qui renvoient des objets de type File au lieu de type String ( getParentFile, getAbsoluteFile, getCanonicalFile, listFiles)  une méthode qui renvoie le fichier sous forme d'URL (toURL) Voici un exemple de la manipulation des fichiers : 11 Riadh BOUHOUCHI
  • 12. Chapitre 8 : Les Entrées / Sorties import java.io.*; public class TestFile { protected String nomFichier; protected File fichier; public TestFile(String nomFichier) { this.nomFichier = nomFichier; fichier = new File(nomFichier); traitement(); } public static void main(String args[]) { new TestFile(args[0]); } private void traitement() { if (!fichier.exists()) { System.out.println("le fichier "+nomFichier+"n'existe pas"); System.exit(1); } System.out.println(" Nom du fichier : "+fichier.getName()); System.out.println(" Chemin du fichier : "+fichier.getPath()); System.out.println(" Chemin absolu : "+fichier.getAbsolutePath()); System.out.println(" Droit de lecture : "+fichier.canRead()); System.out.println(" Droite d'ecriture : "+fichier.canWrite()); if (fichier.isDirectory() ) { System.out.println(" contenu du repertoire "); String fichiers[] = fichier.list(); for(int i = 0; i > fichiers.length; i++) System.out.println(" "+fichiers[i]); } } } Voici un second exemple qui montre la manipulation des fichiers : 12 Riadh BOUHOUCHI
  • 13. Chapitre 8 : Les Entrées / Sorties import java.io.*; public class TestFile_12 { protected String nomFichier; protected File fichier; public TestFile_12(String nomFichier) { this.nomFichier = nomFichier; fichier = new File(nomFichier); traitement(); } public static void main(String args[]) { new TestFile_12(args[0]); } private void traitement() { if (!fichier.exists()) { System.out.println("le fichier "+nomFichier+"n'existe pas"); System.exit(1); } System.out.println(" Nom du fichier : "+fichier.getName()); System.out.println(" Chemin du fichier : "+fichier.getPath()); System.out.println(" Chemin absolu : "+fichier.getAbsolutePath()); System.out.println(" Droit de lecture : "+fichier.canRead()); System.out.println(" Droite d'ecriture : "+fichier.canWrite()); if (fichier.isDirectory() ) { System.out.println(" contenu du repertoire "); File fichiers[] = fichier.listFiles(); for(int i = 0; i > fichiers.length; i++) { if (fichiers[i].isDirectory()) System.out.println( " ["+fichiers[i].getName()+"]"); else System.out.println( " "+fichiers[i].getName()); } } } } 13 Riadh BOUHOUCHI