I want to extract some files from a 7-zip byte stream,it can't be stored on hard disk,so I can't use RandomAccessFile class,I have read sevenzipjbinding source code,it also uncompresses the file with some closed source things like lib7-Zip-JBinding.so which wrote by other language.And the method of the official package SevenZip
SevenZip.Compression.LZMA.Decoder.Code(java.io.InputStream inStream,java.io.OutputStream outStream,long outSize,ICompressProgressInfo progress)
can only uncompress a single file.
So how could I uncompress a 7-zip byte stream with pure Java?
Any guys have solution?
Sorry for my poor English and I'm waiting for your answers online.
Commons compress 1.6 and above has support for manipulating 7z format. Try it.
Reference :
http://commons.apache.org/proper/commons-compress/index.html
Sample :
SevenZFile sevenZFile = new SevenZFile(new File("test-documents.7z"));
SevenZArchiveEntry entry = sevenZFile.getNextEntry();
while(entry!=null){
System.out.println(entry.getName());
FileOutputStream out = new FileOutputStream(entry.getName());
byte[] content = new byte[(int) entry.getSize()];
sevenZFile.read(content, 0, content.length);
out.write(content);
out.close();
entry = sevenZFile.getNextEntry();
}
sevenZFile.close();