Java:如何多次阅读Reader?

时间:2011-05-29 22:39:32

标签: java

如果我调用IOUtils.toString(reader);,则返回正确的字符串值。第二次通话返回""。读者不支持重置

我该如何解决这种情况?

2 个答案:

答案 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的评论指出了这一点。)