Java 如果文件不断更改,是否必须创建fileinputstream的新实例?

Java 如果文件不断更改,是否必须创建fileinputstream的新实例?,java,io,saxparser,fileinputstream,Java,Io,Saxparser,Fileinputstream,我有一个被另一个应用程序不断修改的xml日志;但是,我的Java代码并发运行并检查几个字符串。我使用的是SAX解析器。现在我的问题是,每次循环文件时,是否必须有一个新的FileInputStream实例?解析器呢 那么让我们说: while(notfound) { FileInputStream fis = new FileInputStream(new File("c:/tmp/123.xml")); SaxParser.parse(fis, sampleHandler);

我有一个被另一个应用程序不断修改的xml日志;但是,我的Java代码并发运行并检查几个字符串。我使用的是SAX解析器。现在我的问题是,每次循环文件时,是否必须有一个新的FileInputStream实例?解析器呢

那么让我们说:

while(notfound)
{
    FileInputStream fis = new FileInputStream(new File("c:/tmp/123.xml"));
    SaxParser.parse(fis, sampleHandler);
    notFound = sampleHandler.checkIfFound();
}

谢谢:D

在您提供的示例中,每次要从文件开头开始读取时,将需要一个新的
FileInputStream
<代码>流类通常不允许手动定位/重置“位置”,因为名称('Stream')意味着,它只是一个有位喷出的管道

由于您使用的是
SaxParser.parse()
class方法来启动解析,因此看起来您实际上没有要重新创建的解析器对象。因此,只需重新创建
FileInputStream
就可以了

但是!似乎当前版本的
SaxParser
类支持将
文件
实例作为第一个参数传入,因此您可以重复使用:

while(notfound)
{
    SaxParser.parse(new File("c:/tmp/123.xml"), sampleHandler);
    notFound = sampleHandler.checkIfFound();
}

完全避免重新创建
文件输入流
,并允许解析器处理它。

啊,我明白了。有花纹的。嗯,让我试试。谢谢。