Método para imprimir Writer(java.io.Writer)

Bom dia

Estou usando o Writer(java.io.Writer) e gostaria de imprimir os dados que foram escritos nele, mais até o momento não achei nada para me ajudar a mostrar os dados que estão contidos nele. Se alguém me ajudar agradeço desde já…

Grato

[quote=Michel M]Bom dia

Estou usando o Writer(java.io.Writer) e gostaria de imprimir os dados que foram escritos nele, mais até o momento não achei nada para me ajudar a mostrar os dados que estão contidos nele. Se alguém me ajudar agradeço desde já…

Grato[/quote]

Coloca a parte do código aqui em que você o cria e grava dados nele. e a parte que quer ler os dados dele.

Um Writer é algo onde você escreve (por exemplo, um socket ou um arquivo.)

É possível você fazer uma duplicata (“tee”) dos dados que você escreve em um Writer. Isso envolve encapsular o seu writer (por exemplo, o writer retornado por um socket) em uma classe adicional, que irá gravar uma cópia dos dados em um outro writer (digamos um arquivo).

Há várias classes chamadas “TeeWriter” na Internet (procure por “TeeWriter java” no Google). Faça questão de procurar por TeeWriter, porque por algum motivo o Google pergunta se você não quer uma classe chamada “FileWriter”. )

eu escrevo nele usando toWriter(XMLBuilder)…


private Writer writer;

protected void flush() throws Exception {
    final Properties properties = new Properties();
    properties.put(javax.xml.transform.OutputKeys.METHOD, "xml");
    properties.put(javax.xml.transform.OutputKeys.INDENT, "yes");
    properties.put("{http://xml.apache.org/xslt}indent-amount", "2");
    properties.put(javax.xml.transform.OutputKeys.ENCODING, this.encoding);

    //System.out.println(this.root.asString());
    this.root.toWriter(this.writer, properties);
}

[quote=entanglement]Um Writer é algo onde você escreve (por exemplo, um socket ou um arquivo.)

É possível você fazer uma duplicata (“tee”) dos dados que você escreve em um Writer. Isso envolve encapsular o seu writer (por exemplo, o writer retornado por um socket) em uma classe adicional, que irá gravar uma cópia dos dados em um outro writer (digamos um arquivo).

Há várias classes chamadas “TeeWriter” na Internet (procure por “TeeWriter java” no Google). Faça questão de procurar por TeeWriter, porque por algum motivo o Google pergunta se você não quer uma classe chamada “FileWriter”. )

[/quote]

Dei uma olhada mais não sei como isso vai poder me ajudar…

private Writer writer;  
  
protected void flush() throws Exception {  
    final Properties properties = new Properties();  
    properties.put(javax.xml.transform.OutputKeys.METHOD, "xml");  
    properties.put(javax.xml.transform.OutputKeys.INDENT, "yes");  
    properties.put("{http://xml.apache.org/xslt}indent-amount", "2");  
    properties.put(javax.xml.transform.OutputKeys.ENCODING, this.encoding);  
  
    //System.out.println(this.root.asString());  
    this.root.toWriter(this.writer, properties); 
    System.out.println(this.writer);//imprimir o que foi escrito, mais é claro que aqui só vai imprimir o endereço de memoria 
}  

Já tentou tipo um readLine?

Quem tem esse readLine é BufferedReader, mais o BufferedWriter não tem.

Não sei, mas se você fizer isto aqui:

    this.root.toWriter(this.writer, properties);   
    this.root.toWriter (new BufferedWriter (System.out), properties);

O que ocorre?

[quote=entanglement]Não sei, mas se você fizer isto aqui:

    this.root.toWriter(this.writer, properties);   
    this.root.toWriter (new BufferedWriter (System.out), properties);

O que ocorre?[/quote]

Mais para que fazer isso??

Ele nem permite pq eu estou passando um argumento invalido. Ele pede um Writer.

Ok, é new OutputStreamWriter (System.out), não BufferedWriter (System.out) Errei :slight_smile: (quem manda postar aqui código que não consigo compilar?)

Quem tem esse readLine é BufferedReader, mais o BufferedWriter não tem.[/quote]

Então tenta criar um BufferedReader para o seu fluxo.