Επισκόπηση
Ενώ οι περισσότεροι αλγόριθμοι συμπίεσης σχεδιάστηκαν αρχικά για επεξεργαστές ενός πυρήνα, η εποχή πολλών πυρήνων προσφέρει σημαντικές δυνατότητες για επιτάχυνση. Το Aspose.ZIP αξιοποιεί αυτό παρέχοντας βελτιστοποίηση πολλαπλών πυρήνων για ορισμένες μορφές αρχειοθέτησης.Παραλληλισμός αρχείων BZIP2, LZIP και XZ
Η παραλληλοποίηση είναι ενεργοποιημένη για ορισμένες μορφές αρχειοθέτησης λόγω της εγγενούς φύσης τους που βασίζεται σε μπλοκ. Το Aspose.ZIP το αξιοποιεί αυτό χρησιμοποιώντας μια κοινή προσέγγιση συμπίεσης πολλαπλών πυρήνων σε επίπεδο προγράμματος. Οι χρήστες μπορούν να ελέγχουν τον αριθμό των νημάτων που χρησιμοποιούνται για συμπίεση μέσω της μεθόδου setCompressionThreads(int) . Όταν αυτή η τιμή οριστεί σε μεγαλύτερη από μία, θα χρησιμοποιηθούν πολλαπλοί πυρήνες CPU για ταχύτερη συμπίεση.
Parallel compression to BZIP2
try (Bzip2Archive archive = new Bzip2Archive()) {
archive.setSource("data.bin");
Bzip2SaveOptions options = new Bzip2SaveOptions();
options.setCompressionThreads(4);
archive.save("archive.bz2", options);
}
Parallel compression to XZ
XzArchiveSettings settings = new XzArchiveSettings();
settings.setCompressionThreads(4);
try (XzArchive archive = new XzArchive(settings)) {
archive.setSource("data.bin");
archive.save("archive.xz");
}
Parallel compression to LZ
LzipArchiveSettings settings = new LzipArchiveSettings(16777216);
settings.setCompressionThreads(4);
try (LzipArchive archive = new LzipArchive(settings)) {
archive.setSource("data.bin");
archive.save("archive.lz");
}
Στο Παράδειγμα 1 δείχνει τη δημιουργία ενός αρχείου Bzip2 χρησιμοποιώντας την κλάση Bzip2Archive. Αρχικά, καθορίζουμε το αρχείο προέλευσης που θα συμπιεστεί χρησιμοποιώντας τη μέθοδο archive.setSource("data.bin"). Στη συνέχεια, διάφορες επιλογές συμπίεσης, συμπεριλαμβανομένου του αριθμού των ροών συμπίεσης, μπορούν να διαμορφωθούν χρησιμοποιώντας το αντικείμενο Bzip2SaveOptions. Τέλος, το αρχείο αποθηκεύεται με τις καθορισμένες επιλογές χρησιμοποιώντας τη μέθοδο archive.save("archive.bz2", options).
Στο δεύτερο παράδειγμα, διαμορφώνουμε τις παραμέτρους συμπίεσης για τη μορφή xz πριν δημιουργήσουμε το αρχείο. Αυτή η διαμόρφωση γίνεται χρησιμοποιώντας το αντικείμενο XzArchiveSettings, όπου καθορίζουμε τον επιθυμητό αριθμό ροών συμπίεσης. Στη συνέχεια, δημιουργείται ένα νέο XzArchive με αυτές τις ρυθμίσεις να περάσουν ως όρισμα. Στη συνέχεια, το αρχείο προέλευσης ("data.bin") ορίζεται ως η πηγή για συμπίεση και το αρχείο αποθηκεύεται χρησιμοποιώντας τη μέθοδο archive.save("archive.xz").
Στο τρίτο παράδειγμα, παρουσιάζουμε τη δημιουργία ενός αρχείου LZ χρησιμοποιώντας το αντικείμενο LzipArchiveSettings. Αρχικά, ορίσαμε το μέγεθος του λεξικού που χρησιμοποιείται από τη συμπίεση LZMA. Στη συνέχεια, ορίζουμε τον αριθμό των νημάτων σε 4. Μετά από αυτό, δημιουργούμε ένα αντικείμενο LzipArchive και περνάμε το αντικείμενο LzipArchiveSettings στον κατασκευαστή. Τέλος, καθορίζουμε το αρχείο που θα αρχειοθετηθεί και αποθηκεύουμε το αρχείο.
LZMA2 Compression and Multithreading σε 7Z Archives
Μία από τις μεθόδους συμπίεσης στη μορφή 7z, LZMA2 , υποστηρίζει συμπίεση πολλαπλών νημάτων. Παρόμοια με προηγούμενες μορφές αρχειοθέτησης, μπορείτε να ελέγξετε τον αριθμό των νημάτων που χρησιμοποιούνται με τη μέθοδο setCompressionThreads(int).
SevenZipLZMA2CompressionSettings compSettings = new SevenZipLZMA2CompressionSettings();
compSettings.setCompressionThreads(4);
SevenZipEntrySettings settings = new SevenZipEntrySettings(compSettings);
try (SevenZipArchive archive = new SevenZipArchive(settings)) {
archive.createEntry("first.bin", "data.bin");
archive.save("result.7z");
}
- Ρυθμίσεις συμπίεσης: Ξεκινάμε δημιουργώντας ρυθμίσεις συμπίεσης χρησιμοποιώντας το αντικείμενο SevenZipLZMA2CompressionSettings. Σε αυτό το παράδειγμα, ο αριθμός των ροών συμπίεσης ορίζεται σε 4.
- Ρυθμίσεις εισόδου: Στη συνέχεια, δημιουργείται ένα αντικείμενο SevenZipEntrySettings και εκχωρούνται οι ρυθμίσεις συμπίεσης που ορίσαμε νωρίτερα. Αυτό το βήμα διαμορφώνει τη συμπίεση για κάθε μεμονωμένη εγγραφή στο αρχείο.
- Δημιουργία του αρχείου: Έχοντας όλες τις ρυθμίσεις στη θέση τους, δημιουργούμε ένα αντικείμενο SevenZipArchive και του μεταβιβάζουμε τις ρυθμίσεις καταχώρισης. Αυτό το αρχείο θα περιέχει μια μεμονωμένη καταχώρηση με το όνομα "first.bin" που αντιστοιχεί στο αρχείο προέλευσης "data.bin".
- Αποθήκευση του αρχείου: Τέλος, το αρχείο που δημιουργήθηκε αποθηκεύεται ως "result.7z" χρησιμοποιώντας τη μέθοδο save("result.7z").
Επιταχύνετε την αρχειοθέτηση ZIP με παράλληλη συμπίεση
Η παραλληλοποίηση για ταχύτερη επεξεργασία έχει εφαρμοστεί σε επίπεδο μπλοκ ή αλγορίθμου για προηγούμενες μορφές αρχειοθέτησης στο Aspose.ZIP. Ωστόσο, τα αρχεία ZIP προσφέρουν ένα μοναδικό πλεονέκτημα: παραλληλοποίηση εισαγωγικού επιπέδου κατά την αποθήκευση. Για να το ενεργοποιήσετε, δημιουργήστε ένα αντικείμενο ParallelOptions κατά την αποθήκευση του αρχείου ZIP.
try (Archive archive = new Archive()) {
archive.createEntries("C:\\Data");
ParallelOptions parOptions = new ParallelOptions();
parOptions.setParallelCompressInMemory(ParallelCompressionMode.Auto);
ArchiveSaveOptions options = new ArchiveSaveOptions();
options.setParallelOptions(parOptions);
archive.save("archive.zip", options);
}
Αυτός ο κώδικας χρησιμοποιεί παράλληλη συμπίεση για τη βελτιστοποίηση της δημιουργίας αρχείου και δημιουργεί ένα αρχείο ZIP με το όνομα "archive.zip" από όλα τα αρχεία μέσα στο φάκελο "C:\Data".
Άλλες υποστηριζόμενες δυνατότητες Aspose.ZIP για Java API
Με τη βιβλιοθήκη Aspose.ZIP σε Java, μπορείτε να χειρίζεστε απρόσκοπτα διάφορες εργασίες που σχετίζονται με έγγραφα αρχείων ZIP. Είτε θέλετε να μετατρέψετε μορφές, να συγχωνεύσετε αρχεία, να επεξεργαστείτε περιεχόμενα ή να εξαγάγετε δεδομένα, το Aspose.ZIP παρέχει ολοκληρωμένη λειτουργικότητα για τον εξορθολογισμό της ροής εργασιών σας και τη βελτίωση της παραγωγικότητας.
Support and Learning Resources
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for Java?
- Customers List
- Success Stories