BufferedReader.reset()方法的异常

时间:2014-06-20 12:57:12

标签: java file-io bufferedreader ioexception

我有一个用于读取文件的hasNext()方法。如果它不是文件的末尾,则返回true。 在这种方法中它有一个例外。

异常信息:

  • 异常:java.io.BufferedReader.reset(BufferedReader.java:497)
  • Typ:java.io.IOException
  • 消息:标记无效

我的hasNext()方法:

@Override
public boolean hasNext() {
    try {
        super.getSourceRead().mark(1);
        if (super.getSourceRead().read() < 0) {
            return false;
        }
        getSourceRead().reset();
        return true;
    } catch (IOException e) {
        Logger.exceptionOccurred(e);
        return false;
    } catch (NullPointerException e) {
        Logger.exceptionOccurred(e);
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

好吧,它写在doc for 1.5

  

在阅读这么多字符后,尝试重置流可能   失败。

所以在你的情况下,它说可能在读完1个字符后失败。

将限制设置为2会使我们进入安全区域。

只是为了做一个唠叨的风格评论:我希望你班上某个地方有一个常数或一个成员(抱歉我不得不:))