Eu tenho uma função que pega um objeto de um certo tipo, e um PrintStream
para o qual imprimir, e produz uma representação desse objeto. Como posso capturar a saída desta função em uma String? Especificamente, quero usá-lo como um toString
método.
java
string
printstream
Nick Heiner
fonte
fonte
PrintStream ps = new PrintStream(baos,true,"utf-8");
para evitar o caos do conjunto de caracteresnew String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
disponível desde 1.7 , ele não jogaByteArrayOutputStream.close()
" não tem efeito ", já que não há recursos para liberar além do array de apoio que será tratado pelo coletor de lixo.ByteArrayOutputStream
temtoString(String charsetName)
, mas aceita apenas o argumento String. Observe também que ByteArrayOutputStream está sincronizado , o que provavelmente não é desejávelVocê pode construir um PrintStream com um ByteArrayOutputStream passado para o construtor que pode ser usado posteriormente para capturar o texto escrito no PrintStream.
fonte
Uma unificação das respostas anteriores, esta resposta funciona com Java 1.7 e posteriores. Além disso, adicionei código para fechar o Streams.
fonte
Talvez esta pergunta possa ajudá-lo: Obter um OutputStream em uma String
Subclasse OutputStream e envolva-o em PrintStream
fonte
Defina e inicialize uma variável Scanner chamada inSS que cria um fluxo de string de entrada usando a variável String myStrLine.
Resp: Scanner inSS = new Scanner (myStrLine);
fonte