What is a Java StringWriter
, and when should I use it?
I have read the documentation and looked here, but I do not understand when I should use it.
It is a specialized Writer
that writes characters to a StringBuffer
, and then we use method like toString()
to get the string result.
When StringWriter
is used is that you want to write to a string, but the API is expecting a Writer
or a Stream
. It is a compromised, you use StringWriter
only when you have to, since StringBuffer
/StringBuilder
to write characters is much more natural and easier,which should be your first choice.
Here is two of a typical good case to use StringWriter
1.Converts the stack trace into String
, so that we can log it easily.
StringWriter sw = new StringWriter();//create a StringWriter
PrintWriter pw = new PrintWriter(sw);//create a PrintWriter using this string writer instance
t.printStackTrace(pw);//print the stack trace to the print writer(it wraps the string writer sw)
String s=sw.toString(); // we can now have the stack trace as a string
2.Another case will be when we need to copy from an InputStream
to chars on a Writer
so that we can get String
later, using Apache commons IOUtils#copy :
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);//copy the stream into the StringWriter
String result = writer.toString();