java code

Créer une archive découpée en Java

Dernièrement, j’ai cherché une solution pour pouvoir découper une grosse archive afin de la transférer plus facilement via un web service, le tout en Java :) Je suis tombé sur Zip4j, une librairie open source et gratuite (licence Apache 2.0) qui permet pas mal de petites choses sympathiques : compression et décompression au format zip, ajout et extraction de fichiers au cas par cas, chiffrement et sécurisation de l’archive par mot de passe, etc.

 

Ci-après, un petit exemple de code pour créer une archive en plusieurs parties :)

L’idée est de prendre quatre fichiers (deux documents word et deux pdfs) et de les compresser dans une archive zip. Si la taille de l’archive dépasse les 100ko, elle sera découpée en autant de parties que nécessaires…

    /**
* @param args
* @throws ZipException
*/
public static void main(String[] args) throws ZipException {

// Create the split archive
File dataFolder = new File("data"); // the folder where files to compress are.
ZipFile zip = new ZipFile("output/archive.zip"); // the output archive

ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // standard compression method
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // standard compression level
parameters.setIncludeRootFolder(false); // true if you want data folder to be included in the archive

long ARCHIVE_MAX_SIZE = 100000; // 100ko
zip.createZipFileFromFolder(dataFolder, parameters, true, ARCHIVE_MAX_SIZE);

// Test the archive
System.out.println("Is the generated archive valid: " + zip.isValidZipFile());
System.out.println("Is the generated archive a split one: " + zip.isSplitArchive());

// Unzip the archive
zip.extractAll("output");

}

C’est assez facile, non? :) Et le résultat :

archive découpée en plusieurs fragments avec Zip4j

Pour décompresser une archive découpée en plusieurs parties, il suffit d’instancier un objet ZipFile en spécifiant le chemin du fragment ayant l’extension .zip. Zip4j se chargera de trouver les autres fragments.

Pour en savoir plus, le site officiel est : http://www.lingala.net/zip4j/ . Il n’y a pas de Javadoc complète mais les sources sont bien sûres disponibles au téléchargement et les méthodes disposent de commentaires. Il y a aussi un forum disponible.

Téléchargez le projet de démo :)

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *