1

我有一个应用程序,它从 ZIP 存档中读取文件并将其保存到文件系统上的文件中。将其写入文件系统后,我立即开始使用 SAX2 阅读器读取此文件。在较大的文件 (300+ MB) 上,有时会发生 SAX2 由于未关闭的标记而停止解析。但是当我检查文件时(或者甚至稍后再尝试读取它)它可以工作,所以文件它自己就可以了。

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

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

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

谢谢

4

1 回答 1

3

我将首先假设 XML 解析器运行正常。如果它无法读取文件,那么解决方案是显而易见的。

这让我们看看文件是如何创建的。当您调用 SaveToFile 时,将打开、写入、关闭文件并刷新缓冲区。在普通的 vanilla 系统中,您的 XML 解析器将看到文件的全部内容。唯一的结论是有什么东西在干扰。最喜欢的嫌疑人是您的病毒扫描程序。许多扫描仪,即使是最受尊敬的扫描仪,也无法正确处理关闭然后立即重新打开的文件。

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

于 2013-02-06T14:57:20.700 回答