81 votes

Rediriger la sortie de la console vers une chaîne en Java

J'ai une méthode dont le type de retour est void et elle s'imprime directement sur la console.

Cependant, j'ai besoin de cette sortie dans une chaîne pour pouvoir travailler dessus.

Comme je ne peux apporter aucune modification à la méthode avec le type de retour void je dois rediriger cette sortie vers une chaîne.

Comment puis-je le rediriger en Java ?

147voto

Ernest Friedman-Hill Points 56605

Si la fonction imprime sur System.out , vous pouvez capturer cette sortie en utilisant la méthode System.setOut pour modifier System.out pour passer à un PrintStream fourni par vous. Si vous créez un PrintStream connecté à un ByteArrayOutputStream , vous pouvez capturer la sortie en tant que String .

Exemple:

 // Create a stream to hold the output
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// IMPORTANT: Save the old System.out!
PrintStream old = System.out;
// Tell Java to use your special stream
System.setOut(ps);
// Print some output: goes to your special stream
System.out.println("Foofoofoo!");
// Put things back
System.out.flush();
System.setOut(old);
// Show what happened
System.out.println("Here: " + baos.toString());

Ce programme n'imprime qu'une seule ligne :

 Here: Foofoofoo!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X