web-dev-qa-db-fra.com

Comment convertir Writer en chaîne

 Writer writer = new Writer();
 String data = writer.toString();/* the value is not casting and displaying null...*/

Existe-t-il un autre moyen de convertir un écrivain en chaîne?

26
Pandian

J'utiliserais un écrivain spécialisé si je voulais en faire une chaîne.

Writer writer = new StringWriter();
String data = writer.toString(); // now it works fine
46
Grzegorz Żur

Si vous voulez une implémentation Writer qui résulte en String, tilisez un StringWriter .

1
CommonsWare

Plusieurs réponses suggèrent d'utiliser StringWriter. Il est important de réaliser que StringWriter utilise StringBuffer en interne, ce qui signifie que c'est thread-safe et a un important surcharge de synchronisation.

  • Si vous avez besoin de thread-safety pour le rédacteur, alors StringWriter est le chemin à parcourir.

  • Si vous n'avez pas besoin d'un thread sécurisé Writer (c'est-à-dire que le scripteur n'est utilisé que comme variable locale dans une seule méthode) et que vous vous souciez des performances - pensez à utiliser - StringBuilderWriter de la bibliothèque commons-io .

StringBuilderWriter est presque identique à StringWriter, mais utilise StringBuilder au lieu de StringBuffer.

Exemple d'utilisation:

Writer writer = new StringBuilderWriter();
String data = writer.toString();

Remarque - Log4j a sa propre implémentation StringBuilderWriter qui est presque identique à la version commons-io.

1
Alex Shesterov