Ich erhalte von einem Webservice XML-Dateien im Gzip-Format komprimiert. Die ursprüngliche Größe der Xmls beträgt etwa 80 MB, und die komprimierte Version ist etwa 10 MB. Diese XML-Dateien werden in unserem Cache gespeichert.Inhalt in einer gzip-Datei ersetzen, ohne es zu entpacken
Der XML-Stamm enthält ein Attribut, das eine achtstellige eindeutige ID darstellt. Wenn wir also eine Antwort aus dem Cache liefern, müssen wir diese ID durch eine andere ändern, die von einem anderen Webservice empfangen wurde, bevor die XML an den Endbenutzer zurückgegeben wird.
So sollte der Prozess sein:
- den Cache xml dekomprimieren.
- Ersetzen Sie die zwischengespeicherte ID durch eine, die Sie von einem Webservice erhalten haben.
- Komprimieren Sie die Datei erneut und geben Sie sie an den Client zurück.
Dies ist eine Java-Software. Ich habe mich gefragt, ob es eine Möglichkeit gibt, diese Ersetzung durchzuführen, ohne das gesamte Dokument zu dekomprimieren und erneut zu komprimieren. Irgendeine Art von Lesen und Schreiben ... Ich weiß es nicht.
Ich habe nach einer Java-Bibliothek gesucht, die das tun könnte, aber ich finde nichts (vielleicht, weil es nicht möglich ist).
Irgendeine Idee? Vielen Dank.
Können Sie den Code anzeigen, in dem Sie dekomprimieren, ersetzen und dann erneut komprimieren? Es kann Raum für Verbesserungen geben –
Noch nicht codiert, aber die Idee ist: 1. Erstellen Sie ein Byte [] mit dem unkomprimierten Dokument (mit gzipinputstream). 2. Ersetzen Sie das achtstellige Byte byte (vermeiden Sie eine temporäre Kopie). 3. Komprimiere dieses Byte [] mit gzipoutputstream. – JBalaguero