Java Unzip Zip - mehrere Dateien (einschließlich Ordner), wie folgt:
Komprimieren Sie mehrere Dateien und Ordner und dekomprimieren komplexe Dateiverzeichnisse.
Die Komprimierungsmethode verwendet variable Parameter, die 1 auf mehrere Dateien komprimieren können. Es kann in einem Array geschrieben oder in die Parameterliste nacheinander geschrieben werden ...
ZiPFILES (ZIP, "ABC", neue Datei ("d:/englisch"), neue Datei ("d:/geben data.xls"));Testdateiverzeichnisstruktur:
Der komprimierte Inhalt des Tests: Englischer Ordner und zwei Excel -Dateien auf derselben Ebene
File [] file = new File [] {neue Datei ("d:/englisch"), neue Datei ("d:/geben data.xls"), neue Datei ("d:/chinesische name.xls")};Hier ist der komprimierte Code:
/ ** * Komprimierte Datei - Da es außerhalb des rekursiven Aufrufs sein muss, verkapulieren Sie eine Methode, um * ZipFiles (ZipoutputStream, String Pfad, Datei ... srcFiles) * @Param Zip * @param Path * @param srcFiles * @throws ioException * @Athors -Datei, Dateien), FileaThor Isea533 */ Public VIID ZIPFILES (DATEATHORE ISEA533 */ Public VIID ZIPFILES (STIG), Datei-, Datei- und Public VIid Zipfiles (Datei, Dateien). löscht ioException {zipoutputStream out = new ZipoutputStream (neuer FileOutputStream (ZIP)); Ziptest.zipfiles (out, Pfad, srcFiles); out.close (); System.out.println("*********************************Compressed**********************"); }/*** komprimierte Datei-Datei* @param zipfile zipfile* @param srcFiles Die komprimierte Quelldatei* @Author ISEA533*/public static void zipfiles (ZipoutputStream, String Pfad, Datei ... if (! path.endswith ("/")) {path+= "/"; } byte [] buf = new Byte [1024]; try {for (int i = 0; i <srcFiles.length; i ++) {if (srcFiles [i] .isDirectory ()) {file [] file = srcFiles [i] .Listfiles (); String srcpath = srcFiles [i] .getName (); srcpath = srcpath.replaceall ("//*", "/"); if (! srcPath.endswith ("/")) {srcPath+= "/"; } out.putNextEntry (neu Zipentry (Pfad+SrcPath)); Zipfiles (out, Pfad+srcPath, Dateien); } else {FileInputStream in = new FileInputStream (SrcFiles [i]); System.out.println (Pfad + SrcFiles [i] .getName ()); out.putNextEntry (neu Zipentry (Path + srcFiles [i] .getName ())); Int len; while ((len = in.read (buf))> 0) {out.write (buf, 0, len); } out.closeEntry (); in.close (); }}} catch (exception e) {e.printstacktrace (); }}Treffen Sie während der Komprimierung im Ordner, und komprimieren Sie dann die Datei rekursiv.
Dann entpeilt:
/ ** * Unzip in das angegebene Verzeichnis * @param zippath * @param descdir * @Author ISEA533 */ public static void unzipfiles (String zippath, String Descdir) löscht ioException {unzipfiles (neue Datei (Zippath), Descdir); } / ** * Unzippieren Sie die Datei in das angegebene Verzeichnis * @param zipfile * @param descdir * @Author ISEA533 * / @Suppresswarnings ("rawtypes") public static void unzipFiles (Datei zipfile, String Descdir) löst IoException {Datei pathFile = neue Datei = neue Datei (neue Datei) aus (neue Datei). if (! pathfile.exists ()) {pathFile.mkdirs (); } Zipfile Zip = neu Zipfile (Zipfile); für (Enumeration -Einträge = zip.getentries (); Einträge.HasmoreElements ();) {Zipentry -Eintrag = (Zipentry) Einträge.NextElement (); String zipEnterryName = Eintrag.getName (); InputStream in = Zip.getInputStream (Eintrag); String outPath = (Descdir+ZipEnterryName) .ReplaceAll ("//*", "/") ;; // beurteilen, ob der Weg existiert. Wenn es nicht vorhanden ist, erstellen Sie die Dateipfaddatei = neue Datei (outPath.substring (0, outPath.lastindexof ('/'))); if (! file.exists ()) {file.mkdirs (); } // Beurteilen Sie, ob der vollständige Pfad der Datei ein Ordner ist. Wenn es oben hochgeladen wurde, müssen Sie nicht dekomprimieren, wenn (neue Datei (OutPath) .isDirectory ()) {Fortsetzung; } // Dateipfad -Informationssystem.out.println (outPath) ausgibt; OutputStream out = new FileOutputStream (outPath); Byte [] buf1 = neues Byte [1024]; Int len; while ((len = in.read (buf1))> 0) {out.write (buf1,0, len); } in.close (); out.close (); } System.out.println ("****************************************************** }Stellen Sie beim Dekomprimieren fest, dass der Ordner nicht existiert, und erstellen Sie nur den Ordner, nicht dekomprimieren ... da Dekompression für Dateien, nicht Ordner und Ordner für sich selbst erstellt werden müssen.
Testmethode:
public static void main (String [] args) löst IOException {/*** komprimierte Datei*/file [] file = new Datei [] {neue Datei ("d:/englisch"), neue Datei ("d:/exportdaten.xls"), neue Datei ("d:/chinesische name.xls") aus; Datei zip = neue Datei ("d:/compressed.zip"); Zipfiles (ZIP, "ABC", Dateien); /*** UNZIP -Datei*/Datei zipfile = new Datei ("d:/compressed.zip"); String path = "d:/zipfile/"; Unzipfiles (Zipfile, Pfad); }Die Testmethode behandelt die Ausnahme nicht, dies ist falsch, bitte nachahmen Sie sie nicht nach.
Ausgangsergebnis:
ABC/Englisch/templete.xls
ABC/English/Chinese/CSDN/ISEA/533/ABC/templete.xls
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/templete.xls
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/TEMPLETE.XLS
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/ZIPFILE2/TEMPLETE.XLS
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/ZIPFILE2/CARD COLLECTION LIST.XLS
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/CARD COLLECTION LIST.XLS
ABC/English/Chinese/CSDN/ISEA/TEMPLETET.XLS
ABC/English/Chinese/CSDN/ISEA/Kartensammlungsliste.xls
ABC/English/Chinese/CSDN/templete.xls
ABC/English/Card Empfangsliste.xls
ABC/Ausstellungsdaten.xls
ABC/Chinesischer Name.xls
************************************
D:/ZiPFILE/ABC/CHINESS NAME.XLS
D:/ZIPFILE/ABC/INSTRAGENDATEN.XLS
D:/ZIPFILE/ABC/English/Card Empfangsliste.xls
D: /zipfile/abc/english/chinese/csdn/templete.xls
D:/ZIPFILE/ABC/English/Chinese/CSDN/ISEA/Kartensammlungsliste.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/templete.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/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/ZIPFILE2/KARTE COLLECTING LIST.XLS
D:/ZIPFILE/ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/CARD-ERCEIVED-LIST.XLS
*************************************************************
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.