Ich weiß, wie Zip-Archiv erstellen:So erstellen zip mit LZMA-Kompression
import java.io.*;
import java.util.zip.*;
public class ZipCreateExample{
public static void main(String[] args) throws Exception
// input file
FileInputStream in = new FileInputStream("F:/sometxt.txt");
// out put file
ZipOutputStream out = new ZipOutputStream(new FileOutputStream("F:/tmp.zip"));
// name the file inside the zip file
out.putNextEntry(new ZipEntry("zippedjava.txt"));
// buffer size
byte[] b = new byte[1024];
int count;
while ((count = in.read(b)) > 0) {
System.out.println();
out.write(b, 0, count);
}
out.close();
in.close();
}
}
Aber ich habe keine Ahnung, wie LZMA-Kompression verwenden.
Ich habe dieses Projekt gefunden: https://github.com/jponge/lzma-java das Erstellen von komprimierten Datei, aber ich weiß nicht, wie ich es mit meiner bestehenden Lösung kombinieren sollte.
Weder Java Zip util noch Commons-Compress Unterstützung LZMA-Kompression für jeden ZipEntry. Es würde wahrscheinlich ein oder zwei Tage dauern, um Commons-Compress zu erweitern, um es zu unterstützen, indem Sie den obigen LZMA-Code verwenden und die Prüfungen für STORAGE | außer Kraft setzen DEFLATIEREN. In der Tat wäre es schön, wenn Commons-Compress einen erweiterbaren Ansatz verwenden könnte, bei dem die ZipArchiveEntries mit der erforderlichen Komprimierungsmethode wie ZipArchiveEntryLZMA erweitert wurden. In ZipArchiveOutputStream gibt es zu viele Überprüfungen, um dies schnell zu tun. –