Tengo una función que toma un objeto de cierto tipo, y una PrintStream
en la que imprimir, y genera una representación de ese objeto. ¿Cómo puedo capturar la salida de esta función en una cadena? Específicamente, quiero usarlo como toString
método.
java
string
printstream
Nick Heiner
fuente
fuente
PrintStream ps = new PrintStream(baos,true,"utf-8");
para evitar el caos delnew String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
disponible desde 1.7 , no arrojaByteArrayOutputStream.close()
" no tiene ningún efecto ", ya que no hay recursos para liberar además de la matriz de respaldo que será manejada por el recolector de basura.ByteArrayOutputStream
tienetoString(String charsetName)
, pero solo acepta el argumento String. También tenga en cuenta que ByteArrayOutputStream está sincronizado , lo que probablemente no sea deseablePuede construir un PrintStream con un ByteArrayOutputStream pasado al constructor que luego puede usar para tomar el texto escrito en PrintStream.
fuente
Una unificación de respuestas anteriores, esta respuesta funciona con Java 1.7 y posteriores. Además, agregué código para cerrar Streams.
fuente
Quizás esta pregunta pueda ayudarlo: Obtenga un OutputStream en una cadena
Subclase OutputStream y envuélvalo en PrintStream
fuente
Defina e inicialice una variable de escáner llamada inSS que crea una secuencia de cadena de entrada utilizando la variable de cadena myStrLine.
Respuesta: Escáner inSS = nuevo escáner (myStrLine);
fuente