Java SAXParser-保持InputStream打开

Java SAXParser-保持InputStream打开,java,stream,sax,Java,Stream,Sax,我有一个BufferedInputStream,我想从中使用SAXParser解析XML,但再次重用它(例如mark(int)&reset())。但是,此流在parse()方法中关闭。有没有可能告诉SAXParser让它保持打开状态?最后一种方法是使用不可关闭的流来包装此流 谢谢。像这样的东西怎么样: class WontCloseBufferedInputStream extends BufferedInputStream { public void close () { // D

我有一个
BufferedInputStream
,我想从中使用
SAXParser
解析XML,但再次重用它(例如
mark(int)
&
reset()
)。但是,此流在
parse()
方法中关闭。有没有可能告诉
SAXParser
让它保持打开状态?最后一种方法是使用不可关闭的流来包装此流


谢谢。

像这样的东西怎么样:

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

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

您可以将InputSource对象而不是InputStream对象传递给SAXParser

示例代码

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

解析器完成时,
InputSource
是否关闭?如果是这样的话,这是没有帮助的。但是,这篇文章既不能解决问题,也不能暗示解决方案:o)我很想知道为什么你认为这是最后的手段。它正是你想要的,因为它很丑。IMO库不应关闭传入的InputStream/Reader。