Ich verwende Embarcadero C++ Builder 10.1 Berlin Update 2. Ich verwende System.Zip.TZipFile.ExtractAll()
, um eine große .zip
Datei zu extrahieren.Wie kann System.Zip.TZipFile.ExtractAll aufgelöst werden, wenn nicht alle Daten aus der ZIP-Datei extrahiert werden?
hier die Details rund um das Problem Szenario sind:
- Die Größe der
.zip
Datei ist 387.077 KB System.Zip.TZipFile.ExtractAll()
Mit der.zip
-Datei zu extrahieren, landen wir mit:- ein 4.194.304 KB Datei.
- Die Daten werden abgeschnitten.
- Windows-Betriebssystem verwenden, rechts
Extract All...
klicken, erhalten wir- eine 6.035.259 KB Größe Datei auf.
Wir müssen alle Daten aus dieser Datei.
Lesen Sie die System.Zip.TZipFile Dokumentation, ich sehe nichts über Einschränkungen im Zusammenhang mit der Dateigröße.
Von dem, was ich weiß, ist dies Embarcadero die Möglichkeit, .zip
Dateien zu extrahieren. Wie kann ich dieses Problem beheben?
Weißt du, ob es alles auf die Festplatte geleert hat? Angenommen, unter Windows OS laufen zu tun Äquivalent von "Sync" – Griffin
@Griffin Ich bin sicher, es ist meine Ignoranz, was meinst du, alles auf die Festplatte geleert? Der Aufruf der Extraktionsmethode ist in 'Synchronize()' eingeschlossen, was sicherstellen soll, dass er auf dem Hauptthread ausgeführt wird. – HappyCoding
Im Linux-basierten Betriebssystem 'Sync' wird sichergestellt, dass alles, was im Speicher überragend ist, gelöscht wird. Ich denke in Windows haben Sie vielleicht etwas wie 'FlushFileBuffers', das eine ähnliche Sache machen kann. Natürlich ist dies nicht die Ursache des Problems, aber überprüfen Sie es. – Griffin