wie zum extrahieren von Dateien aus 7-zip-stream in Java ohne speichern auf der Festplatte?
Möchte ich extrahieren einige Dateien aus 7-zip-byte-stream,kann es nicht auf der Festplatte abgelegt,so kann ich nicht verwenden RandomAccessFile-Klasse,ich habe gelesen, sevenzipjbinding source-code,es auch dekomprimiert die Datei mit einigen closed-source-Sachen wie lib7-Zip-JBinding.so der schrieb vom anderen Sprache.Und die Methode von der offiziellen Paket SevenZip
SevenZip.Compression.LZMA.Decoder.Code(java.io.InputStream inStream,java.io.OutputStream outStream,long outSize,ICompressProgressInfo progress)
kann nur entpacken einer einzelnen Datei.
So, wie konnte ich entpacken, 7-zip byte-stream mit Reine Java?
Alle Jungs haben eine Lösung?
Sorry für mein schlechtes Englisch, und ich bin warten auf Ihre Antworten online.
- Werfen Sie einen Blick auf die Apache Commons Compress - Bibliothek, die ich glauben, 7z Umsetzung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Commons compress 1.6 und höher bietet Unterstützung für das Bearbeiten 7z-format. Versuchen Sie es.
Referenz :
http://commons.apache.org/proper/commons-compress/index.html
Beispiel :
Seit 7z Dekomprimierung erfordert random access, müssen Sie Lesen Sie den gesamten Strom in einen
byte[]
und verwendennew SevenZFile(new SeekableInMemoryByteChannel(bytes))
. (Wenn es länger alsInteger.MAX_VALUE
bytes, müssen Sie erstellen eine benutzerdefinierteSeekableByteChannel
Umsetzung.) Sobald die Instanz erstellt wurde, der Prozess ist der gleiche wie in SANN3 Antwort.Wenn es nicht in den Speicher passt und können Sie nicht schreiben Sie es in eine temporäre Datei, dann 7zip-ist das nicht ein passendes Kompressions-Algorithmus gegeben sein müssen für den wahlfreien Zugriff.