如何确保文件正确写入文件系统?

时间:2013-02-06 10:36:18

标签: delphi stream delphi-2009

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

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

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

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

THX

1 个答案:

答案 0 :(得分:3)

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

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

最重要的是,您的代码很好,问题几乎肯定在于您的本地环境。