Cet article décrit les classes d'outils de compression et de décompression zip implémentées dans Java. Partagez-le pour votre référence, comme suit:
Importer java.io.BufferedInputStream; Importer java.io.BufferedOutputStream; Importer java.io.file; import java.io.fileInputStream; Importer java.io.filenotfoundException; import java.io.fileoutStream; Importer java.io.ioexect; import java.io.inputStream; import java.util.enumeration; import org.apache.tools.zip.zipentry; import org.apache.tools.zip.zipfile; import org.apache.tools.zip.zipOutStream; classe publique ziputil {private static final int bufferedsize = 1024; / ** * Fichier compressé * * @param zipFileName * Path de fichier de package compressé * @param filepath * dossier ou chemin de fichier qui doit être compressé * @param isdelete * Que ce soit supprimer le fichier source * @throws exception * / public void zip (string zipfilename, string filepathe isDelete); } / ** * Fichier compressé * * @Param ZipFileName * Path de fichier de package compressé * @Param InputFile * Folder ou fichier qui doit être compressé * @param isdelete * Que ce soit supprimer le fichier source * @throws exception * / public void zip FileOutputStream (ZipFileName)); if (! inputFile.exists ()) {Throw New FileToTFoundException ("Aucun fichier à comprimer n'a été trouvé dans le chemin spécifié!"); } zip (out, inputfile, "", isdelete); out.close (); } / ** * Méthode de compression récursive * * @param out * Stream de sortie du package compressé * @param f * Fichier à compresser * @param base * Path comprimé * @param isdelete * If doit supprimer le fichier source * @throws exception * / private void zip (zipOutStStream Out, fichier inputFile, base de chaîne, boolean isdelete) trous // s'il s'agit d'un fichier de répertoire [] inputFiles = inputFile.listFiles (); OUT.PUTNEXTENTRY (nouveau zipentry (base + "/")); base = base.length () == 0? "": base + "/"; for (int i = 0; i <inputfiles.length; i ++) {zip (out, inputfiles [i], base + inputfiles [i] .getName (), isdelete); }} else {// Si c'est un fichier if (base.length ()> 0) {out.putNextStry (new Zipentry (base)); } else {out.putNextStry (new Zipentry (inputFile.getName ())); } FileInputStream dans = new FileInputStream (InputFile); essayez {int len; octet [] buff = nouveau octet [tamponnize]; while ((len = in.read (buff))! = -1) {out.write (buff, 0, len); }} catch (ioException e) {throw e; } enfin {in.close (); }} if (isdelete) {inputFile.delete (); }} / ** * Décompressez * * @param zipfilepath * PATAL PALLET DE COMPRES File (filesavepath)). MkDirs (); Fichier f = nouveau fichier (zipfilepath); if ((! f.exists ()) && (f.length () <= 0)) {lancer une nouvelle exception ("le fichier à décompression n'existe pas!"); } Zipfile zipfile = new ZipFile (f); String strpath, gbkpath, strTEmp; File tempFile = nouveau fichier (filesavePath); // Démarrez à partir du répertoire actuel strpath = tempfile.getAbsolutepath (); // la position absolue de l'énumération de sortie <Zipentry> e = zipfile.getEntries (); while (e.hasmoreElements ()) {org.apache.tools.zip.zipentry zipent = e.nextelement (); gbkpath = zipent.getName (); if (zipent.isdirectory ()) {strTemp = strpath + file.separator + gbkpath; Fichier dir = nouveau fichier (strTemp); dir.mkDirs (); continuer; } else {// lire et écrire le fichier inputStream est = zipfile.getInputStream (zipent); BufferedInputStream bis = new BufferedInputStream (IS); gbkpath = zipent.getName (); strTemp = strpath + file.separator + gbkpath; // Créer une chaîne de répertoire strousbdir = gbkpath; for (int i = 0; i <strSubDir.length (); i ++) {if (strSubDir.substring (i, i + 1) .equalSignoreCase ("/")) {String temp = strpath + file.separator + strSubDir.SubString (0, i); Fichier subdir = nouveau fichier (temp); if (! subdir.exists ()) subdir.mkdir (); }} FileOutputStream fos = new FileOutputStream (strTemp); BufferedOutputStream bos = new BufferedOutputStream (FOS); int len; octet [] buff = nouveau octet [tamponnize]; while ((len = bis.read (buff))! = -1) {bos.write (buff, 0, len); } bos.close (); fos.close (); }}} catch (exception e) {e.printStackTrace (); jeter e; } if (isdelete) {nouveau fichier (zipFilePath) .Delete (); }} // public static void main (String [] args) {// ziputil cpr = new Ziputil (); // try {// cpr.zip ("c: / utilisateurs / Lenovo User / Desktop / test chinois.zip", "c: users / lenovo user / users / users / users", false); // cpr.unzip ("C: / Lenovo", false); // cpr.unzip ("C: / LenoD", false); // cpr.unzip ("C: / LenoD", False); // CPR.unzip ("C: / LenoD", False); // CPR.UNZIP ("C: / LENOVO" User / Desktop / Test Chinese.zip "," C: / Userst / Lenovo User / Desktop / New Folder 2 ", false); //} catch (exception e) {// e.printStackTrace (); //} ////}}Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Résumé des fichiers Java et des compétences de l'opération de répertoire", "Tutoriel sur les structures de données Java et les algorithmes", "Résumé des compétences de nœuds de l'opération Java" »et" Résumé des compétences de l'opération Java Cache "
J'espère que cet article sera utile à la programmation Java de tous.