javastringtostringstringreader

How do I convert a StringReader to a String?


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?


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);