gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:07:06 26 4
gpt4 key购买 nike

我有一个 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 类通常不允许手动定位/重置“位置”,因为名称(“Stream”)暗示,它只是一个从其中喷出位的管道。

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

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

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

完全避免重新创建FileInputStream,并允许解析器处理该问题。

关于java - 如果文件不断更改,我是否必须创建 fileinputstream 的新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com