Les flux standards en Java

Il existe des flux standards, accessibles de manière statique depuis la classe java.lang.System. Ils permettent les interactions entre le programme et l'utilisateur au travers de la console et du clavier.

Inhaltsverzeichnis Haut

Les 3 flux standards de System

System.in

public static final InputStream in

Permet de saisir les entrées clavier. En mode console, la lecture d'une ligne est une méthode bloquante : le processus est bloqué en attente que l'utilisateur presse la touche enter.... Dans la console d'Eclipse, l'affichage se fait par défaut en vert.

Inhaltsverzeichnis Haut

System.out

public static final PrintStream out

Permet d'afficher dans la console une chaîne de caractères. Dans la console d'Eclipse, l'affichage se fait par défaut en noir.

Inhaltsverzeichnis Haut

System.err

public static final PrintStream err

Permet d'afficher dans la console un message d'erreur. Dans la console d'Eclipse, l'affichage se fait par défaut en rouge.

Inhaltsverzeichnis Haut

Rediriger les flux standards

public static final InputStream in

Avant de rediriger un des flux standards, nous pouvons le maintenir sous forme de variable pour le réinitialiser par la suite.

Trois méthodes statiques de la classe System nous permettent de modifier les flux standards :

public static void setIn(InputStream in)

Utilise la source de l'InputStream passé en argument au lieu de la source du flux standard (System.in).

public static void setOut(PrintStream out)

Redirige la sortie du flux standard System.out vers le PrintStream passé en argument.

public static void setErr(PrintStream err)

Redirige la sortie du flux standard System.err vers le PrintStream passé en argument.

Inhaltsverzeichnis Haut

Exemple

  1. import java.io.*;
  2.  
  3. public class FileToFile {
  4.  
  5. public static void copyFile(File fFrom,File fTo) throws IOException{
  6. PrintStream originalOut = System.out;
  7. InputStream originalIn = System.in;
  8.  
  9. InputStream sIn = new FileInputStream(fFrom);
  10.  
  11. PrintStream sOut = new PrintStream(fTo);
  12.  
  13. System.setIn(sIn);
  14. System.setOut(sOut);
  15.  
  16. while(sIn.available()>0){
  17. char c = (char)System.in.read();
  18. //print to screen
  19. System.setOut(originalOut);
  20. System.out.print(c);
  21. //print to file
  22. System.setOut(sOut);
  23. System.out.print(c);
  24. }
  25.  
  26. System.setIn(originalIn);
  27. System.setOut(originalOut);
  28. }
  29. public static void main(String[] args) {
  30. File fFrom = new File("outputFiles/first.txt");
  31. File fTo = new File("outputFiles/output.txt");
  32. try {
  33. copyFile(fFrom,fTo);
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }

Inhaltsverzeichnis Haut

Astuces eclipse

Eclipse nous propose certains raccourcis assez agréables pour de petits tests rapides d'affichage en cours de dévelloppement.
Il nous suffit d'introduire sysout, puis d'utiliser la combinaison de touches Ctrl + Space pour que notre éditeur nous génère un beau System.out.println();.
De même, syserr nous génère System.err.println();.

Plus intéressant encore, le raccourci systrace nous donne le code pour effectuer une sortie avec le nom de la classe et de la méthode comme par exemple System.out.println("CurrentBrolUser.getAvatar()");.

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 24/06/2005, zuletzt geändert 08/08/2019
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/java-system-out.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.