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");
Tal vez esta pregunta pueda ayudarte: Obtener un OutputStream en una cadena
Subclase OutputStream y envuélvalo en PrintStream
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);