Java 如果文件不断更改,是否必须创建fileinputstream的新实例?
我有一个被另一个应用程序不断修改的xml日志;但是,我的Java代码并发运行并检查几个字符串。我使用的是SAX解析器。现在我的问题是,每次循环文件时,是否必须有一个新的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);
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();
}
完全避免重新创建
文件输入流
,并允许解析器处理它。啊,我明白了。有花纹的。嗯,让我试试。谢谢。