如果我调用IOUtils.toString(reader);
,则返回正确的字符串值。第二次通话返回""
。读者不支持重置
我该如何解决这种情况?
答案 0 :(得分:4)
如果Reader
不支持mark()
和reset()
,则无法使String
“重新阅读”。但是,您可以使用您展示的来电中返回的StringReader
来创建mark()
任意次,并根据需要阅读(或使用reset()
和{{1}}在单个实例上根据需要重新读取它。)
答案 1 :(得分:3)
使用支持重置的java.io.Reader,例如CharArrayReader
(请参阅http://download.oracle.com/javase/6/docs/api/java/io/CharArrayReader.html)。
如果设置了标记,则BufferedReader还支持有限数量字符的reset()。
更一般地,markSupported方法指示您使用的Reader的实现是否支持mark / reset(感谢Bala R的评论指出了这一点。)