我是一个从zip存档中读取文件的应用程序,并将其保存到文件系统上的文件。将其写入文件系统后,我将立即启动以读取使用SAX2 Reader读取此文件。在较大的文件(300+ MB)上有时会发生,因此由于未闭合的标签,SAX2停止解析。但是当我检查文件(甚至稍后再次尝试阅读)时,它可以工作,所以它自拍的文件可以确定。

FZipKit.ExtractToStream(LFileName, LStream);
LStream.SaveToFile(OutputFilename);
SAX2.processUrl(OutputFilename);

我的假设是,当我启动解析过程时,该文件尚未完全写入文件系统。

有没有办法来确保文件已被写入或蒸汽已刷新到文件系统?

谢谢

有帮助吗?

解决方案

我首先要假设XML解析器正常运行。如果它无法读取文件,那么解决方案很明显。

这导致我们查看该文件的创建方式。调用SaveToFile时,将打开文件,写入,关闭和缓冲区。在普通的香草系统中,您的XML解析器将看到文件的整个内容。唯一的结论是有些事情发生干扰。最喜欢的嫌疑人是你的病毒扫描仪。许多扫描仪,即使是最受尊重的扫描仪,无法正确处理已关闭的文件,然后立即重新打开。

底线是您的代码很好,问题几乎肯定是您当地的环境。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top