Java unzip Zip - несколько файлов (включая папки), следующим образом:
Сжатие нескольких файлов и папок и декомпресс сложных файловых каталогов.
Метод сжатия использует параметры переменных, которые могут сжать 1 к нескольким файлам. Он может быть записан в массиве или записан в список параметров один за другим ...
Zipfiles (Zip, "ABC", новый файл ("d:/jonging"), новый файл ("d:/ensuing data.xls"));Структура каталога файлов тестирования:
Сжатый содержимое теста: английская папка и два файла Excel на одном и том же уровне
File [] files = new File [] {new File ("d:/jorning"), new File ("d:/ensuing data.xls"), new File ("d:/китайский name.xls")};Вот сжатый код:
/ ** * Сжатый файл - Поскольку выход должен быть вне рекурсивного вызова, инкапсулируйте метод, чтобы * вызовать Zipfiles (ZipOutputStream Out, String Path, File ... srcfiles) * @param Zip * @param Path * @param srcfiles * @Throws ioExcept бросает ioException {ZipOutputStream OUT = new ZipOutputStream (new FileOutputStream (ZIP)); Ziptest.zipfiles (out, path, srcfiles); out.close (); System.out.println ("******************************* }/*** сжатый файл-файл* @param Zipfile Zipfile* @param srcfiles. Сжатый исходный файл* @author isea533*/public static void Zipfiles (ZipoutputStream Out, String Path, file ... srcfiles) {path = path.replacealll ("//*", "/"); if (! path.endswith ("/")) {path+= "/"; } byte [] buf = new Byte [1024]; try {for (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.putnextentry (новый zipentry (path+srcpath)); Zipfiles (out, path+srcpath, файлы); } else {fileInputStream in = new FileInputStream (srcfiles [i]); System.out.println (path + srcfiles [i] .getName ()); out.putnextentry (новый 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 (); }}Во время сжатия вынесите суждения в папке, а затем рекурсивно сжимают файл.
Затем распад:
/ ** * Unzip в указанный каталог * @param zippath * @param descdir * @author isea533 */ public static void unzipfiles (string zippath, string descdir) бросает ioexception {unzipfiles (новый файл (zippath), descdir); } / ** * Незащите файл в указанный каталог * @param Zipfile * @param descdir * @author isea533 * / @suppresswarnings ("rawtypes") public void unzipfiles (файл zipfile, string descdir) throws ioexception {file pathfile = new file (descdir); if (! pathfile.exists ()) {pathfile.mkdirs (); } Zipfile Zip = new Zipfile (Zipfile); for (enumeration ntistics = zip.getEntries (); intisters.hasmoreElements ();) {Zipentry intry = (Zipentry) negies.nextelement (); String ZipentryName = intry.getName (); InputStream in = Zip.getInputStream (intpirt); String outpath = (descdir+zipentryname) .replaceall ("//*", "/") ;; // Судят, существует ли путь. Если его не существует, создайте файл файла файла файла файла = новый файл (outpath.substring (0, uptapath.lastindexof ('/'))); if (! file.exists ()) {file.mkdirs (); } // Судите, является ли полный путь файла папкой. Если он был загружен выше, нет необходимости декомпрессировать, если (новый файл (Outpath) .isdirectory ()) {продолжить; } // Выходная информационная система Pail Path.out.println (Outpath); OutputStream out = new FileOutputStream (Outpath); byte [] buf1 = новый байт [1024]; int len; while ((len = in.read (buf1))> 0) {out.write (buf1,0, len); } in.close (); out.close (); } System.out.println ("***************************************** }При декомпрессии определите, что папка не существует, и только создайте папку, а не распаковывает ее ... потому что декомпрессия предназначена для файлов, а не папок, и папки должны быть созданы сами.
Метод испытаний:
public static void main (string [] args) бросает ioException {/*** сжатый файл*/file [] files = new File [] {new File ("d:/jorning"), новый файл ("d:/export data.xls"), новый файл ("d:/китайское имя.xls")}; File Zip = new File ("d: /compressed.zip"); Zipfiles (Zip, "ABC", файлы); /*** unzip file*/file zipfile = new File ("d: /compressed.zip"); String path = "d:/Zipfile/"; Unzipfiles (Zipfile, Path); }Метод испытаний не обрабатывает исключение, это неправильно, пожалуйста, не подражайте им.
Результат вывода:
ABC/English/Templete.xls
ABC/English/Chines/CSDN/ISEA/533/ABC/Templete.xls
ABC/English/Chines/CSDN/ISEA/533/ABC/Zipfile2/Templete.xls
ABC/English/Chines/CSDN/ISEA/533/ABC/Zipfile2/Zipfile/abc/templete.xls
ABC/English/Chine/CSDN/ISEA/533/ABC/Zipfile2/Zipfile/abc/Zipfile2/templete.xls
ABC/English/Chines/CSDN/ISEA/533/ABC/Zipfile2/Zipfile/abc/Zipfile2/Сбор карт
ABC/английский/китайский/CSDN/ISEA/533/ABC/Zipfile2/Sulty Sulty.xls
ABC/English/Chines/CSDN/ISEA/Templete.xls
ABC/английский/китайский/CSDN/ISEA/Сбор сбора карт. XLS
ABC/English/Chines/CSDN/Templete.xls
ABC/English/Card Приема списка.xls
ABC/выдача data.xls
ABC/Китайское имя.xls
*******************
D:/Zipfile/abc/китайское имя.xls
D:/Zipfile/ABC/Выпуск DATA.XLS
D:/Zipfile/ABC/English/Card Приема
D: /zipfile/abc/english/chinese/csdn/templete.xls
D:/Zipfile/ABC/English/China/CSDN/ISEA/Сбор сбора карт. 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/Chines/CSDN/ISEA/533/ABC/Zipfile2/Zipfile/abc/Zipfile2/Сбор карт Список.xls
D:/Zipfile/ABC/English/China/CSDN/ISEA/533/ABC/ZIPFILE2/CARD-CECERED LIST.XLS
********************************************
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.