Java Unzip Zip: múltiples archivos (incluidas las carpetas), como sigue:
Comprima múltiples archivos y carpetas y descomprime los directorios de archivos complejos.
El método de compresión utiliza parámetros variables, que pueden comprimir 1 a múltiples archivos. Se puede escribir en una matriz o escrito en la lista de parámetros uno por uno ...
ZipFiles (zip, "ABC", nuevo archivo ("d:/inglés"), nuevo archivo ("d:/emiting data.xls"));Estructura del directorio de archivos de prueba:
El contenido comprimido de la prueba: carpeta en inglés y dos archivos de Excel del mismo nivel
Archivo [] archivos = nuevo archivo [] {nuevo archivo ("d:/inglés"), nuevo archivo ("d:/emiting data.xls"), nuevo archivo ("d:/chino name.xls")};Aquí está el código comprimido:
/ ** * Archivo comprimido: dado que la salida debe estar fuera de la llamada recursiva, encapsular un método a * llamar a ZipFiles (ZipOutputStream Out, String Rath, File ... Srcfiles) * @param Zip * @param Path * @param srcfiles * @throws ioexception * @author iseA533 */ public void voides zipfiles (file, string string, string strew, string string, string string, string stent, string string, string stret, string stion, string stion, string stion, string stion, string string stration lanza IOException {ZipOutputStream out = new ZipOutputStream (new FileOutputStream (ZIP)); Ziptest.zipfiles (fuera, ruta, srcfiles); out.close (); System.out.println ("**************************************Comprimido **********************"); }/*** File de archivo comprimido* @param zipfile zipfile* @param srcfiles el archivo de origen comprimido* @author isEa533*/public static void zipfiles (ZipoutputStream Out, string ruta, archivo ... srcfiles) {path = path.replaceall ("//*", "/"); if (! Path.endswith ("/")) {Path+= "/"; } byte [] buf = new Byte [1024]; Pruebe {for (int i = 0; i <srcfiles.length; i ++) {if (srcfiles [i] .isDirectory ()) {file [] files = srcfiles [i] .listFiles (); Cadena srcpath = srcfiles [i] .getName (); srcpath = srcpath.replaceall ("//*", "/"); if (! srcpath.endswith ("/")) {srcpath+= "/"; } out.putNextEntry (New ZipEntry (ruta+srcpath)); ZipFiles (Out, Path+Srcpath, archivos); } else {fileInputStream in = new FileInputStream (srcfiles [i]); System.out.println (ruta + srcfiles [i] .getName ()); out.putNextEntry (new ZipEntry (ruta + srcfiles [i] .getName ())); int len; while ((len = in.read (buf))> 0) {out.write (buf, 0, len); } out.closeEntry (); cercar(); }}} Catch (Exception e) {E.PrintStackTrace (); }}Durante la compresión, haga juicios en la carpeta y luego comprime recursivamente el archivo.
Entonces descomprimir:
/ ** * Unzip al directorio especificado * @param zippath * @param descdir * @author isEa533 */ public static void unzipfiles (String zippath, string descdir) lanza ioexception {unzipfiles (nuevo archivo (zippath), descdir); } / ** * Unzip el archivo al directorio especificado * @param zipfile * @param descdir * @author isEa533 * / @suppresswarnings ("rawtypes") public static void unzipfiles (archivo zipfile, string descdir) lanza ioexception {archivo pathfile = nuevo archivo (descDir); if (! PathFile.Exists ()) {PathFile.MkDirs (); } Zipfile zip = new ZipFile (ZipFile); para (Enumeration Entries = Zip.GetEntries (); Entries.hasmoreElements ();) {ZipEntry Entry = (ZipEntry) Entries.nextelement (); Cadena zipentryName = Entry.getName (); InputStream in = zip.getInputStream (entrada); String OutPath = (DescDir+ZipEntryName) .replacealll ("//*", "/") ;; // juzga si el camino existe. Si no existe, cree el archivo de ruta de archivo Archivo = nuevo archivo (OutPath.Substring (0, OutPath.lastIndexof ('/')); if (! file.exists ()) {file.mkdirs (); } // juzga si la ruta completa del archivo es una carpeta. Si se ha cargado anteriormente, no hay necesidad de descomprimir si (nuevo archivo (OutPath) .IsDirectory ()) {continuar; } // El sistema de información de archivo de salida System.out.println (Outpath); OutputStream out = new FileOutputStream (OutPath); byte [] buf1 = nuevo byte [1024]; int len; while ((len = in.read (buf1))> 0) {out.write (buf1,0, len); } in.close (); out.close (); } System.out.println ("*******************************************"); }Cuando descomprima, determine que la carpeta no existe, y solo cree la carpeta, no descomprima ... porque la descompresión es para archivos, no carpetas y carpetas deben ser creadas por sí mismas.
Método de prueba:
public static void main (string [] args) lanza IOException {/*** archivo comprimido*/archivo [] archivos = nuevo archivo [] {nuevo archivo ("d:/inglés"), nuevo archivo ("d:/export data.xls"), nuevo archivo ("d:/chino name.xls")}; Archivo zip = nuevo archivo ("d: /compressed.zip"); ZipFiles (zip, "ABC", archivos); /*** archivo unzip*/file zipfile = nuevo archivo ("d: /Compissed.zip"); Ruta de cadena = "d:/zipfile/"; Unzipfiles (ZipFile, ruta); }El método de prueba no maneja la excepción, esto está mal, por favor no lo imite.
Resultado de salida:
ABC/English/Templete.xls
ABC/Inglés/Chino/CSDN/ISEA/533/ABC/Templete.xls
ABC/Inglés/Chino/CSDN/ISEA/533/ABC/ZIPFILE2/TEMPLETE.XLS
ABC/Inglés/Chino/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/TEMPLETE.XLS
ABC/Inglés/Chino/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/ZIPFILE2/TEMPLETE.XLS
ABC/Inglés/Chino/CSDN/ISEA/533/ABC/ZIPFILE2/ZIPFILE/ABC/ZIPFILE2/Lista de colección de tarjetas.xls
ABC/English/Chinese/CSDN/ISEA/533/ABC/ZIPFILE2/Lista de colección de tarjetas.xls
ABC/Inglés/Chino/CSDN/ISEA/Templete.xls
ABC/Inglés/Chino/CSDN/ISEA/Lista de colección de tarjetas.xls
ABC/Inglés/Chino/CSDN/Templete.xls
ABC/English/Card Recibe List.xls
ABC/emisión de datos.xls
ABC/Nombre chino.xls
*********************** Completado completado ******************************
D:/zipfile/abc/chino name.xls
d:/zipfile/abc/emits data.xls
D:/Zipfile/ABC/English/Card Recibe List.xls
d: /zipfile/abc/english/chinese/csdn/templete.xls
d:/zipfile/abc/inglés/chino/csdn/isea/list de colección de tarjetas.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/inglés/chino/csdn/isea/533/abc/zipfile2/zipfile/abc/zipfile2/card colección list.xls
D:/zipfile/abc/inglés/chino/csdn/isea/533/abc/zipfile2/tard-recheived list.xls
************************************
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.