Cómo comprimir una carpeta en un paquete zip usando Java
Existe una clase de utilidad zip en el JDK:
java.util.zip proporciona clases para leer y escribir los formatos de archivo ZIP y
GZIP estándar.
Con esta clase, puedes empaquetar una carpeta o varios archivos.
Antes de usar esta clase, comprenda los siguientes métodos clave:
ZipEntry(String name) Crea una nueva entrada zip usando el nombre especificado.
El uso del constructor ZipEntry creará una instancia de paquete de compresión zip y luego usará ZipOutputStream para escribir el archivo que se comprimirá en el paquete zip en forma de secuencia.
El código de implementación es el siguiente: import?java.io.BufferedInputStream;?
import?java.io.BufferedOutputStream;?
import?java.io.File;? p>
importar?java.io.FileInputStream;?
importar?java.io.FileNotFoundException;?
importar?java.io.FileOutputStream;?
importar?java.io.IOException;?
importar?java.util.zip.ZipEntry;?
importar?java.util.zip.ZipOutputStream;? p>
/**? *?¿Empaquetar la carpeta? *?¿Empacar los archivos de la carpeta en un paquete comprimido zip? *? *?@autor?admin? *? */?
público?final?clase?FileToZip?{?
/**? *? ¿Empacar los archivos fuente almacenados en el directorio sourceFilePath en un archivo zip con el nombre fileName y almacenarlo en la ruta zipFilePath? *?@param?sourceFilePath?:¿Ruta del archivo a comprimir? *?@param?zipFilePath?:¿Ruta del archivo a comprimir? *?@param?fileName?: ¿El nombre del archivo comprimido? *? */?
public.static.boolean.fileToZip(String.sourceFilePath,String.zipFilePath,String.fileName){?
boolean.flag.=?
¿Archivo?sourceFile?=?new?File(sourceFilePath);?
FileInputStream?
BufferedInputStream?bis?=?null;?
FileOutputStream?fos?=?null;?
ZipOutputStream?zos?=?null;?
if(sourceFile.exists()? ==?false){? >
System.out.println("Directorio de archivos a comprimir: "+sourceFilePath+"No existe...") ;?
}else{? try{?
Archivo?zipFile?=?new?File(zipFilePath?+?" /"? +?fileName?+".zip");?
if(zipFile .exists()){?
System.out.println(zipFilePath?+?" El directorio existe y el nombre es: "?+?fileName?+".zip"?+"Archivo de paquete. .. ");?
}else{?
Archivo[]?sourceFiles?=?sourceFile.listFiles();?
if(null?==?sourceFiles?| |?sourceFiles.longitud
h<1){?
System.out.println("Directorio de archivos a comprimir:"?+?sourceFilePath?+?"No existen archivos en él, no es necesario comprimir..." );?
}else{?
fos?=?new?FileOutputStream(zipFile);?
zos?=?new?ZipOutputStream(new?BufferedOutputStream(fos ));?
byte[]?bufs?=?new?byte[1024*10];?
for(int?i=0;i // Crea una entidad ZIP y agrégala al zip. ZipEntry?zipEntry?=?new?ZipEntry(sourceFiles[i].getName());? zos.putNextEntry(zipEntry);? // ¿Leer el archivo a comprimir y escribirlo en el archivo comprimido? fis = new FileInputStream(sourceFiles[i]);? bis?=?new?BufferedInputStream(fis,?1024*10);? int? mientras((read=bis.read(bufs,?0,?1024*10))?! =? zos.write(bufs,0,read) ;? }? }? bandera? }? }? }?catch?{ }?catch? e.printStackTrace();? lanzar?new?RuntimeException(e); ? }?{ }?catch? e.printStackTrace();? ¿lanzar? }?finalmente{? //¿Cerrar la transmisión? intenta{? if(null! =?bis)?bis.close( );? if(null?! =?zos)?zos.close();? =?zos)?zos.close();? }?{ e.printStackTrace();? ¿lanzar? }? }? }? regresar? }? público?D:\TestFile";? Cadena?D:\\tmp";? String?fileName?=?"12700153file";? boolean?flag?=?FileToZip.fileToZip(sourceFilePath,?zipFilePath,?fileName);? if(flag){? System.out.println("¡Archivo empaquetado correctamente!") ;? }else{? System. out.println("¡Error al empaquetar el archivo!") ;? }? } } }? p>