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?
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
Si vous voulez une implémentation Writer
qui résulte en String
, tilisez un StringWriter
.
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.