Tengo una función que toma un objeto de cierto tipo, y una PrintStreamen 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 toStringmé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.ByteArrayOutputStreamtienetoString(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