Mehrfädige Unix-Archive in Java
Übersicht
XZ,
Bzip2 und
Lzip sind unter Linux weit verbreitet. Aufgrund ihrer Blockstruktur können sie in mehreren Threads komprimiert werden. Aspose.ZIP API bietet die Methode setCompressionThreads
für alle, um mehrere CPU-Kerne für die Kompression zu nutzen. Die Einstellung auf mehr als einen führt zu einer Komprimierung mit mehreren Kernen, die Einstellung auf einen - die Standardoption - führt zu einer Komprimierung mit einem einzigen CPU-Kern.
XZ Multithreading-Komprimierung
Es gibt eine
setCompressionThreads Methode in XzArchiveSettings
.
Das folgende Code-Beispiel zeigt, wie eine Datei mit einer XzArchive-Instanz komprimiert werden kann.
1try (FileOutputStream xzFile = new FileOutputStream("archive.xz")) {
2 try (FileInputStream source = new FileInputStream("data.bin")) {
3 XzArchiveSettings settings = new XzArchiveSettings();
4 settings.setCheckType(XzCheckType.Crc32);
5 settings.setCompressionThreads(4);
6 try (XzArchive archive = new XzArchive(settings)) {
7 archive.setSource(Quelle);
8 archive.save(xzFile);
9 }
10 }
11} catch (IOException ex) {
12}
Bzip2 Multithreading-Kompression
Es gibt eine
setCompressionThreads Methode in Bzip2SaveOptions
.
Das folgende Codebeispiel zeigt, wie eine Datei mit Hilfe der Bzip2Archive-Instanz komprimiert wird.
1try (FileOutputStream bz2File = new FileOutputStream("archive.bz2")) {
2 try (FileInputStream source = new FileInputStream("data.bin")) {
3 try (Bzip2Archiv archive = new Bzip2Archiv()) {
4 archive.setSource(source);
5 Bzip2SaveOptions options = new Bzip2SaveOptions(9);
6 options.setCompressionThreads(4);
7 archive.save(bz2File, options);
8 }
9 }
10} catch (IOException ex) {
11}
Lzip Multithreading-Kompression
Es gibt eine
setCompressionThreads Methode in LzipArchiveSettings
.
Das folgende Code-Beispiel zeigt, wie man eine Datei mit Hilfe der LzipArchive-Instanz komprimiert.
1try (FileOutputStream lzFile = new FileOutputStream("archive.lz")) {
2 try (FileInputStream source = new FileInputStream("data.bin")) {
3 LzipArchiveSettings settings = new LzipArchiveSettings(16777216);
4 settings.setCompressionThreads(4);
5 try (LzipArchive archive = new LzipArchive(settings)) {
6 archive.setSource(Quelle);
7 archive.save(lzFile);
8 }
9 }
10} catch (IOException ex) {
11}
In allen Beispielen werden vier Threads verwendet.