我首先要假设XML解析器正常运行。如果它无法读取文件,那么解决方案很明显。
这导致我们查看该文件的创建方式。调用SaveToFile时,将打开文件,写入,关闭和缓冲区。在普通的香草系统中,您的XML解析器将看到文件的整个内容。唯一的结论是有些事情发生干扰。最喜欢的嫌疑人是你的病毒扫描仪。许多扫描仪,即使是最受尊重的扫描仪,无法正确处理已关闭的文件,然后立即重新打开。
底线是您的代码很好,问题几乎肯定是您当地的环境。
题
我是一个从zip存档中读取文件的应用程序,并将其保存到文件系统上的文件。将其写入文件系统后,我将立即启动以读取使用SAX2 Reader读取此文件。在较大的文件(300+ MB)上有时会发生,因此由于未闭合的标签,SAX2停止解析。但是当我检查文件(甚至稍后再次尝试阅读)时,它可以工作,所以它自拍的文件可以确定。
FZipKit.ExtractToStream(LFileName, LStream);
LStream.SaveToFile(OutputFilename);
SAX2.processUrl(OutputFilename);
我的假设是,当我启动解析过程时,该文件尚未完全写入文件系统。
有没有办法来确保文件已被写入或蒸汽已刷新到文件系统?
谢谢
解决方案
我首先要假设XML解析器正常运行。如果它无法读取文件,那么解决方案很明显。
这导致我们查看该文件的创建方式。调用SaveToFile时,将打开文件,写入,关闭和缓冲区。在普通的香草系统中,您的XML解析器将看到文件的整个内容。唯一的结论是有些事情发生干扰。最喜欢的嫌疑人是你的病毒扫描仪。许多扫描仪,即使是最受尊重的扫描仪,无法正确处理已关闭的文件,然后立即重新打开。
底线是您的代码很好,问题几乎肯定是您当地的环境。