В этой статье описываются классы инструментов сжатия ZIP и декомпрессии, реализованных на Java. Поделитесь этим для вашей ссылки, следующим образом:
Импорт java.io.bufferedinptstream; import java.io.bufferedOutputStream; импорт java.io.file; import java.io.fileinputstream; импорт java.io.filenotfoundexception; импорт java.io.fileoutputstream; import java.io.ioexcept java.util.enumeration; импорт org.apache.tools.zip.zipentry; import org.apache.tools.zip.zipfile; импорт org.apache.tools.zip.zipoutputstream; public class ziputil {private static final int bufferesize = 1024; / ** * Сжатый файл * * * @param Zipfilename * Сохраненный сжатый путь файла пакета * @param filepath * папка или путь файла, которые необходимо сжать * @param iSdelete * Будь то удалить исходный файл * @Throw File (filePath), isDelete); } / ** * сжатый файл * * * @param zipfilename * Сохраненный сжатый путь файла пакета * @param inputfile * или файл, который необходимо сжать * @param isdelete * Будет ли удалить исходный файл * @throws excection * / public zip (string zipfilename, filefile, boolean isdelete execement xipstream xip -stipstream Zipoutputstream (новый файл palieoutputstream (zipfilename)); if (! inputfile.exists ()) {бросить новое filenotfoundexception («Файл для сжатия не был найден в указанном пути!»); } Zip (out, inputfile, "", iSdelete); out.close (); } / ** * Метод рекурсивного сжатия * * @param out * сжатый выходной поток пакета * @param f * файл для сжатия * @param base * compressed path * @param isdelete * Будет ли удалить исходный файл * @throw (inputfile.isdirectory ()) {// Если это файл каталога [] inputFiles = inputFile.listFiles (); out.putnextentry (новый 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 {// Если это файл if (base.length ()> 0) {out.putnextentry (new Zipentry (base)); } else {out.putnextentry (new Zipentry (inputfile.getName ())); } FileInputStream in = new FileInputStream (inputFile); попробуй {int len; byte [] buff = new Byte [BufferedSize]; while ((len = in.read (buff))! = -1) {out.write (buff, 0, len); }} catch (ioException e) {throw e; } наконец {in.close (); }} if (isDelete) {inputFile.delete (); }} / ** * decompress * * @param zipfilepath * сжатие пути пакета * @param filepath * unzip path * @param iSdelete * Будь то удаление исходного файла * @Throws Exception * / public void unzip (string ZipfilePath, String filePath, Boolean isDelet File (filesavePath)). Mkdirs (); Файл F = новый файл (ZipfilePath); if ((! f.exists ()) && (f.length () <= 0)) {бросить новое исключение («Файл для декомпрессии не существует!»); } Zipfile Zipfile = new Zipfile (f); String Strpath, Gbkpath, Strtemp; File tempfile = new File (filesavePath); // запустить с текущего каталога strpath = tempfile.getabsolutePath (); // абсолютное положение выходного перечисления while (e.hasmoreelements ()) {org.apache.tools.zip.zipentry zipent = e.nextelement (); gbkpath = Zipent.getName (); if (zipent.isdirectory ()) {strtemp = strpath + file.separator + gbkpath; File dir = новый файл (strtemp); dir.mkdirs (); продолжать; } else {// Читать и записать файл inputstream is = Zipfile.getInputStream (Zipent); BufferedInputStream bis = new BufferedInputStream (IS); gbkpath = Zipent.getName (); strtemp = strpath + file.separator + gbkpath; // Создать строку каталога strsubdir = 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); File subdir = new File (temp); if (! subdir.exists ()) subdir.mkdir (); }} FileOutputStream fos = new FileOutputStream (strtemp); BufferedOutputStream Bos = new 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 (); бросить E; } if (isDelete) {new File (ZipfilePath) .delete (); }} // public static void main (string [] args) {// Ziputil cpr = new Ziputil (); // try {// cpr.zip ("c:/users/lenovo user/desktop/test cilling.zip", "c:/user/lenovo user/desktop/new Polder", false); Пользователь/Desktop/Test cilina.zip "," c:/users/lenovo user/desktop/new Polder 2 ", false); //} catch (Exception e) {// e.printstacktrace (); //} //////}}Для получения дополнительной информации об алгоритмах Java читатели, которые интересуются этим сайтом, могут просмотреть темы: «Сводка файлов Java и навыки операции по каталогам», «Учебное пособие по структурам данных и алгоритмам Java», «Сводка операции Java Operation Dom Node» и «Сводка операции Java Cache»
Я надеюсь, что эта статья будет полезна для всех Java Programming.