Java Unzip Zip - plusieurs fichiers (y compris les dossiers), comme suit:
Compressez plusieurs fichiers et dossiers et décompressez les répertoires de fichiers complexes.
La méthode de compression utilise des paramètres variables, qui peuvent compresser 1 sur plusieurs fichiers. Il peut être écrit dans un tableau ou écrit dans la liste des paramètres un par un ...
Zipfiles (zip, "ABC", nouveau fichier ("d: / anglais"), nouveau fichier ("d: / émission data.xls"));Structure du répertoire des fichiers de test:
Le contenu compressé du dossier Test: English et deux fichiers Excel du même niveau
Fichier [] fichiers = nouveau fichier [] {nouveau fichier ("d: / anglais"), nouveau fichier ("d: / émission data.xls"), nouveau fichier ("d: / chinois name.xls")};Voici le code compressé:
/** * Compressed file - Since out needs to be outside the recursive call, encapsulate a method to * call ZipFiles(ZipOutputStream out,String path,File... srcFiles) * @param zip * @param path * @param srcFiles * @throws IOException * @author isea533 */ public static void ZipFiles(File zip,String path,File... srcFiles) lève ioException {zipOutputStream out = new ZipOutputStream (new FileOutputStream (zip)); Ziptest.zipfiles (out, chemin, srcfiles); out.close (); System.out.println ("********************************* compressé **********************"); } / ** * File de fichier compressé * @param zipfile zipfile * @param srcfiles Le fichier source compressé * @author isea533 * / public static void zipfiles (zipOutputStream out, String Path, fichier ... srcfiles) {path = path.replaceal ("// *", "/"); if (! path.endswith ("/")) {path + = "/"; } octet [] buf = nouveau octet [1024]; essayez {pour (int i = 0; i <srcfiles.length; i ++) {if (srcfiles [i] .isDirectory ()) {file [] files = srcfiles [i] .listFiles (); String srcpath = srcfiles [i] .getName (); srcpath = srcpath.replaceAll ("// *", "/"); if (! srcpath.endswith ("/")) {srcpath + = "/"; } out.putNextStry (new Zipentry (path + srcPath)); Zipfiles (out, path + srcpath, fichiers); } else {fileInputStream dans = new FileInputStream (srcfiles [i]); System.out.println (path + srcfiles [i] .getName ()); OUT.PUTNEXTENTRY (New Zipentry (Path + Srcfiles [i] .getName ())); int len; while ((len = in.read (buf))> 0) {out.write (buf, 0, len); } out.closeEntry (); joindre(); }}} catch (exception e) {e.printStackTrace (); }}Pendant la compression, faites des jugements sur le dossier, puis compressez le fichier récursivement.
Puis dézip:
/ ** * Unzip au répertoire spécifié * @param zippath * @param descdir * @author isea533 * / public static void unzipfiles (String zippath, string descdir) lève ioException {unzipfiles (nouveau fichier (zippath), descdir); } / ** * Unzip le fichier dans le répertoire spécifié * @param zipfile * @param descdir * @author iSEA533 * / @SuppressWarnings ("RawTypes") public static void unzipfiles (file zipfile, string descdir) throws ioexception {file pathfile = nouveau fichier file (Descdir); if (! pathFile.exists ()) {pathFile.mkDirs (); } Zipfile zip = new ZipFile (zipfile); for (Enueration Entries = zip.getEntries (); entrées.HasmoreElements ();) {Zipentry Entry = (Zipentry) entrées.NextElement (); String zipentryName = entry.getName (); InputStream dans = zip.getInputStream (entrée); String outpath = (descdir + zipentryname) .replaceAll ("// *", "/") ;; // juger si le chemin existe. S'il n'existe pas, créez le fichier de fichier fichier de fichier = nouveau fichier (undpath.substring (0, undpath.lastIndexof ('/'))); if (! file.exists ()) {file.mkDirs (); } // juger si le chemin complet du fichier est un dossier. S'il a été téléchargé ci-dessus, il n'est pas nécessaire de décompresser si (nouveau fichier (uppath) .isDirectory ()) {Continuer; } // Sortie du chemin du fichier Informations System.out.println (UNTACH); OutputStream out = new FileOutputStream (OutPath); octet [] buf1 = nouveau octet [1024]; int len; while ((len = in.read (buf1))> 0) {out.write (buf1,0, len); } in.close (); out.close (); } System.out.println ("*********************************************"); }Lors de la décompression, déterminez que le dossier n'existe pas et ne créez que le dossier, ne le décompressez pas ... parce que la décompression est pour les fichiers, pas les dossiers et les dossiers doivent être créés par eux-mêmes.
Méthode de test:
public static void main (String [] args) lance ioException {/ ** * Fichier compressé * / file [] files = new File [] {new File ("D: / English"), nouveau fichier ("d: / export data.xls"), nouveau fichier ("d: / chinois name.xls")}; File zip = new File ("d: /compressed.zip"); Zipfiles (zip, "ABC", fichiers); / ** * Unzip File * / File ZipFile = nouveau fichier ("d: /compressed.zip"); String path = "d: / zipfile /"; unzipfiles (zipfile, chemin); }La méthode de test ne gère pas l'exception, c'est mal, veuillez ne pas l'imiter.
Résultat de sortie:
ABC / Anglais / Templete.xls
ABC / Anglais / Chinois / CSDN / ISEA / 533 / ABC / Templete.xls
ABC / Anglais / Chine
ABC / Anglais / Chine
ABC / Anglais / Chine
ABC / Anglais / Chinois / CSDN / ISEA / 533 / ABC / ZIPFILE2 / ZIPFILE / ABC / ZIPFILE2 / CARDE COLLECTION LIST.XLS
ABC / ANGLAIS / Chine
ABC / Anglais / Chinois / CSDN / ISEA / Templete.xls
ABC / Anglais / Chinese / CSDN / ISEA / Card Collection List.xls
ABC / Anglais / Chinois / CSDN / Templete.xls
ABC / English / Card Rece Recevoir List.xls
ABC / émission de données.xls
abc / chinois name.xls
******************* compressé terminé ***************************
d: / zipfile / abc / chinois name.xls
d: / zipfile / abc / problème data.xls
d: / zipfile / abc / anglais / card recevoir list.xls
d: /zipfile/abc/english/chinese/csdn/tempete.xls
d: / zipfile / abc / anglais / chinois / csdn / isea / carte collection list.xls
d: /zipfile/abc/english/chinese/csdn/isea/templete.xls
d: /zipfile/abc/english/chinese/csdn/isea/533/abc/templete.xls
d: /zipfile/abc/english/templete.xls
d: /zipfile/abc/english/chinese/csdn/isea/533/abc/zipfile2/tremplete.xls
d: /zipfile/abc/english/chinese/csdn/isea/533/abc/zipfile2/zipfile/abc/templete.xls
d: /zipfile/abc/english/chinese/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/templete.xls
d: / zipfile / abc / anglais / chinois / csdn / isea / 533 / abc / zipfile2 / zipfile / ABC / zipfile2 / collection card list.xls
d: / zipfile / abc / anglais / chinois / csdn / isea / 533 / abc / zipfile2 / card list.xls
**********************************
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.