java string printstream

Java: PrintStream a String?



(5)

Defina e inicialice una variable de escáner llamada inSS que crea una secuencia de entrada de datos utilizando la variable String myStrLine.

Resp: Scanner inSS = new Scanner (myStrLine);

Tengo una función que toma un objeto de un cierto tipo y un PrintStream para imprimir y PrintStream una representación de ese objeto. ¿Cómo puedo capturar la salida de esta función en una cadena? Específicamente, quiero usarlo como en un método toString .


Puede construir un PrintStream con un ByteArrayOutputStream pasado al constructor que luego puede usar para tomar el texto escrito en PrintStream.

ByteArrayOutputStream os = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(os); ... String output = os.toString("UTF8");



Una unificación de respuestas anteriores, esta respuesta funciona con Java 1.7 y posteriores. Además, agregué código para cerrar las transmisiones.

final Charset charset = StandardCharsets.UTF_8; ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos, true, charset.name()); yourFunction(object, ps); String content = new String(baos.toByteArray(), charset); ps.close(); baos.close();


Use un ByteArrayOutputStream como un buffer:

import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.nio.charset.StandardCharsets; ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (PrintStream ps = new PrintStream(baos, true, "UTF-8")) { yourFunction(object, ps); } String data = new String(baos.toByteArray(), StandardCharsets.UTF_8);