Dieser Artikel beschreibt die in Java implementierten ZIP -Komprimierungs- und Dekompressionsklassen. Teilen Sie es für Ihre Referenz wie folgt weiter:
Importieren Sie Java.io.BufferedInputStream; Import Java.io.BuffenedOutputStream; Import Java.io.file; Import Java.io.fileInputStream; Import Java.io.io.filenotfoundException; importieren java.io.io. java.util.enumeration; import org.apache.tools.zip.zipentry; import org.apache.tools.zip.zipfile; import org.apache.tools.zip.zipoutputStream; öffentliche Klasse Ziputil {private statische endgültige interedSize = 1024; / ** * Komprimierte Datei * * @param zipfilename * gespeicherter komprimierter Paketdateipfad * @param filepath * Ordner oder Dateipfad, der komprimiert werden muss Datei (filepath), isdelete); } / ** * komprimierte Datei * * @param zipfilename * gespeicherter komprimierter Paketdateispath * @param InputFile * Ordner oder Datei, die komprimiert werden muss ZipoutputStream (neuer FileOutputStream (Zipfilename)); if (! inputFile.exists ()) {Wurf neuer FilenotFoundException ("In dem angegebenen Pfad wurde keine Datei komprimiert!"); } Zip (out, InputFile, "", isdelete); out.close (); } / ** * rekursive Komprimierungsmethode * * @param out * komprimiertes Paketausgabe Stream * @param f * Datei zum Komprimieren * @param base * komprimierter Path * @param isdelete * Ob löschen die Quelldatei * @Throws Exception * / private void ZIP (ZIPOUTPUTSTREAM OUT), Dateieingangsdatei, String Base, String Base, boolean isdeläe) isdelete -throws {throws {wenn (inputFile.isdirectory ()) {// Wenn es sich um eine Verzeichnisdatei [] inputFiles = inputFile.Listfiles () handelt; out.putNextEntry (neu Zipentry (Basis + "/")); Base = Base.length () == 0? "": Basis + "/"; für (int i = 0; i <inputFiles.length; i ++) {ZIP (out, inputFiles [i], Base+InputFiles [i] .getName (), isdelete); }} else {// wenn es sich um eine Datei if (base.length ()> 0) {out.putNextEntry (neu zipentry (Basis)); } else {out.putNextEntry (neu Zipentry (inputFile.getName ())); } FileInputStream in = new FileInputStream (inputFile); versuche {int len; byte [] buff = new byte [bufferedSize]; while ((len = in.read (buff))! = -1) {out.write (Buff, 0, len); }} catch (ioException e) {throw e; } endlich {in.close (); }} if (isdelete) {inputFile.delete (); }} / ** * decompress * * @param zipfilepath * komprimieren Paketpfad * @param filesavepath * unzip path * @param isdelete *, ob die Quelldatei * @Throws AUSSCHLIESSE * / public void unpip (String zipfilepath, String FilesPath, Boolean). Datei f = neue Datei (Zipfilepath); if ((! } Zipfile zipfile = neu zipfile (f); String strad, gbkPath, Strtemp; Datei tempFile = neue Datei (DateiavePath); // Start im aktuellen Verzeichnis stradphe = tempfile.getabsolutepath (); // Die absolute Position der Ausgabeumzählung <ZipEntry> e = Zipfile.getentries (); while (e.hasmoreElements ()) {org.apache.tools.zip.zipentry zipent = e.NextElement (); gbkpath = zipent.getName (); if (zipent.isdirectory ()) {strTemp = strad + file.separator + gbkPath; Datei DIR = New Datei (Strtemp); dir.mkdirs (); weitermachen; } else {// Lesen und Schreibdatei inputStream is = zipfile.getInputStream (Zipent); BufferedInputStream Bis = neuer BufferedInputStream (IS); gbkpath = zipent.getName (); strTemp = strPath + file.separator + gbkPath; // Verzeichnis String Strsubdir = gbkPath; für (int i = 0; i <Strsubdir.length (); i ++) {if (streSubdir.substring (i, i + 1) .equalSignoreCase ("/")) {String temp = strpath + file.separator + streSubdir.substring (0, i); Datei subdir = neue Datei (temp); if (! subdir.exists ()) subdir.mkdir (); }} FileOutputStream fos = new FileOutputStream (Strtemp); BufferedOutputStream bos = neuer bufferedOutputStream (FOS); Int len; byte [] buff = new byte [bufferedSize]; while ((len = Bis.read (Buff))! = -1) {bos.write (Buff, 0, len); } bos.close (); fos.close (); }}} catch (exception e) {e.printstacktrace (); werfen e; } if (isDelete) {neue Datei (Zipfilepath) .Delete (); }} // public static void main (String [] args) {// Ziputil cpr = new ziputil (); // try {// cpr.zip ("c:/user/lenovo user/desktop/test chinese.zip", "c:/user/lenovo user/desktop/desktop/new order); Benutzer/Desktop/Test Chinese.zip "," c:/user/lenovo user/desktop/neuer Ordner 2 ", false); //} catch (Ausnahme E) {// e.printstacktrace (); //} ////}}Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Zusammenfassung von Java -Dateien und Verzeichnisbetriebskenntnissen", "Tutorial über Java -Datenstrukturen und Algorithmen", "Zusammenfassung der Java Operation Dom Node Skills" und "Zusammenfassung der Java -Cache -Fähigkeiten" anzeigen "
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.