How do I convert a StringReader to a String?

java, string, stringreader, tostring

Solution

The `StringReader`'s `toString` method does not return the `StringReader` internal buffers.

You'll need to read from the `StringReader` to get this.

I recommend using the overload of read which accepts a character array. Bulk reads are faster than single character reads.

ie.

//use string builder to avoid unnecessary string creation.
StringBuilder builder = new StringBuilder();
int charsRead = -1;
char[] chars = new char[100];
do{
    charsRead = reader.read(chars,0,chars.length);
    //if we have valid chars, append them to end of string.
    if(charsRead>0)
        builder.append(chars,0,charsRead);
}while(charsRead>0);
String stringReadFromReader = builder.toString();
System.out.println("String read = "+stringReadFromReader);

Problem

I'm trying to convert my `StringReader` back to a regular `String`, as shown: ``` String string = reader.toString(); ``` But when I try to read this string out, like this: ``` System.out.println("string: "+string); ``` All I get is a pointer value, like this: ``` java.io.StringReader@2c552c55 ``` Am I doing something wrong in reading the string back?

Original source