Frage

Ich habe eine Anwendung, die eine Datei aus einem ZIP-Archiv liest, und speichert es in Dateisystem. Nach dem Schreiben in das Dateisystem beginnen Sie mit einem SAX2-Leser sofort, um diese Datei mit einem SAX2-Leser zu lesen. Bei größeren Dateien (300+ MB) treten manchmal auf, dass SAX2 aufgrund eines nicht eingerichteten Tags aufhört. Wenn ich jedoch die Datei überprüfe (oder sogar versuchen, es später erneut zu lesen), funktioniert es, sodass die Datei selbst in Ordnung ist.

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

Meine Annahme ist, dass die Datei nicht vollständig in das Dateisystem geschrieben wurde, als ich den Analyseprozess begann.

Gibt es eine Möglichkeit, sicherzustellen, dass die Datei geschrieben wurde oder der Dampf in das Dateisystem gespült wurde?

Vielen Dank

War es hilfreich?

Lösung

Ich gehe zum ersten Mal davon aus, dass der XML-Parser ordnungsgemäß arbeitet. Wenn es nicht in der Lage ist, Dateien zu lesen, ist die Lösung offensichtlich.

Was uns führt, um zu sehen, wie die Datei erstellt wird. Wenn Sie SavetoFile anrufen, wird die Datei geöffnet, geschrieben, geschlossen und Puffer gespült. In einem einfachen Vanillesystem wird Ihr XML-Parser den gesamten Inhalt der Datei angezeigt. Die einzige Schlussfolgerung ist, dass etwas beeinträchtigt. Der meiste Verdächtige ist Ihr Virenscanner. Viele Scanner, selbst die am stärksten angesehensten, können nicht ordnungsgemäß umgehen, dass eine Datei geschlossen ist, und dann sofort wiedergeöffnet.

Die unterste Linie ist, dass Ihr Code in Ordnung ist und das Problem fast sicherlich mit Ihrer örtlichen Umgebung liegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top