Java SAXParser - 保持InputStream打开

4
我有一个BufferedInputStream,我想用SAXParser解析XML,然后再次重用它(例如mark(int)reset())。然而,在parse()方法中关闭了这个流。有没有可能告诉SAXParser保持它的开放状态?最后的办法是用不可关闭的流包装这个流。
谢谢。
2个回答

8
像这样的话怎么样:

如何处理:

class WontCloseBufferedInputStream extends BufferedInputStream {
  public void close () {
    // Do nothing.
  }

  public void reallyClose() {
    super.close ();
  }
}

我很想知道为什么你认为这是最后的手段。它确切地做了你想要的事情。 - OldCurmudgeon
1
因为它很丑。在我看来,库不应该关闭传入的InputStream/Reader。 - woky

-1

你可以将 InputSource 对象 而非 InputStream 对象传递给 SAXParser。

示例代码:

SAXParser parser = // saxpaser object
        InputSource isource = new InputSource();
        InputStream istream = //your inputstream
        isource.setByteStream(istream);
        parser.parse(isource, handler);

1
当解析器完成时,InputSource 是否关闭?如果是,则这并没有什么帮助。 - OldCurmudgeon
但是这篇文章并没有解决问题,也没有给出任何提示 :o) - Theodor Keinstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接