我正在尝试将 StringReader 转换回常规字符串,如下所示:
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?
推荐答案StringReader 的 toString 方法不返回 StringReader 内部缓冲区。
The StringReader's toString method does not return the StringReader internal buffers.
你需要阅读 StringReader 才能得到这个。
You'll need to read from the StringReader to get this.
我建议使用接受字符数组的read重载。批量读取比单个字符读取更快。
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);更多推荐
如何将StringReader转换为String?
发布评论