INF1563 Programmation I


Entrées / sorties


Communication du programme avec le monde extérieur

Les opérations de sortie

Où transmettre les résultats ?

Les opérations d'entrée

Où chercher les données ?

Les opérations d'entrée/sortie en Java suivent le schéma suivant :

Il est aussi possible d'accéder aux arguments du programme fournis à la ligne de commande.

Exemple :

public class AffichageArgs {

  public static void main(String args[]) {
    for (int i=0; i<args.length; i++){
      System.out.println(args[i]);
    }
  }
}

Le package java.io

Les flux

Un flux (stream en anglais) permet d'encapsuler le processus d'envoi et de réception de données.

Classes de gestion des flux

Deux types de flots en Java :

flux de caractèresflux d'octets
flux d'entréeReaderInputStream
flux de sortieWriterOutputStream

Les quatre classes dans ce tableau sont abstraites (elles ne peuvent pas être utilisées directement); elles contiennent plusieurs sous-classes.

Hiérarchie de classes (incomplète) et exemples de méthodes

Exemple : lecture d'un fichier texte

import java.io.*;

public class TestBufferedReader {

  public static void main(String args[]) {
    try {
      BufferedReader fichier = new BufferedReader(new FileReader("C:\\test.txt"));
      String ligne ;
      while ((ligne = fichier.readLine()) != null) {
        System.out.println(ligne);
      }
      fichier.close();
    } catch (IOException e) {
      System.out.println("Un problème quelque part !");
    }
  }
}

Exemple : lecture d'un caractère de l'entrée standard

import java.io.*;

public class TestLireCar {

  public static void main(String args[]) {
    try {
      int n = System.in.read();
      System.out.println(n);
    } catch (IOException e) {
      System.out.println("Erreur en lecture");
    }
  }
}

Exemple : lecture d'une ligne de l'entrée standard

import java.io.*;

public class TestLireLigne {

  public static void main(String args[]) {

    try {
      int fin = (int) '\n';
      int n;
      while ((n = System.in.read()) != fin)
        System.out.print(n + " ");
      System.out.println("\nFin" + fin);
    } catch (IOException e) {
      System.out.println("Erreur en lecture");
    }
  }
}
abc
97 98 99 13
Fin10