Cómo generar un archivo ZIP usando Java
importar org.apache.tools.zip.ZipEntry;
importar org.apache.tools.zip.ZipOutputStream;
/** *? @project: * @author chenssy * @date 2013-7-28? * @Descripción: clase de herramienta de compresión de archivos* ?Comprime los archivos/carpetas especificados en archivos comprimidos zip o rar*/
clase pública CompressedFileUtil {
/**
?* Constructor predeterminado
?*/
public CompressedFileUtil(){
}
/**
?* @desc Genera un archivo comprimido en el formato especificado desde el archivo/carpeta de origen en formato zip p >
?* @param resourePath archivo/carpeta fuente
?* @param targetPath ?La ruta del archivo comprimido de destino
?* @return void
?* @throws Excepción
?*/
public void comprimidoFile(String resourcesPath,String targetPath) throws Exception{
Archivo recursosFile = nuevo Archivo( resourcesPath); //Archivo fuente
Archivo targetFile = new File(targetPath ?//Target
//Si la ruta de destino no existe, cree una nueva ruta
p>
if(!targetFile.exists()){
targetFile.mkdirs() ?
}
Cadena targetName = resourcesFile.getName()+".zip"; ?
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(outputStream));
createCompressedFile( fuera, resourcesFile, "");
close() ?
}
/**
?* @desc Generar archivo zip.
?* ?Si es una carpeta, use recursividad, recorrido de archivos y compresión
?* ?Si es un archivo, comprima directamente
?* @param out ?Flujo de salida
?* @param archivo ?Archivo de destino
?* @return void
?* @throws ¿Excepción?*/ p>
public void createCompressedFile(ZipOutputStream out,File file,String dir) lanza una excepción{
//si la actual es una carpeta, procesamiento adicional
if (file.isDirectory () ){
//Obtener la información de la lista de archivos
File[] files = file.listFiles();
/ Agregar la carpeta a la siguiente nivel de directorios empaquetados
out.putNextEntry(new ZipEntry(dir+"/"));
dir = dir.length() == 0 ? "" : dir + "/";
for(int i = 0 ; i < files.length ; i++) {
createCompressedFile(out, files[i], dir + files [i].getName() //procesamiento recursivo
}
); }
else{ ?//actual es un archivo empaquetado para su procesamiento
//flujo de entrada del archivo
FileInputStream fis = new FileInputStream(file); p>
out.putNextEntry(new ZipEntry(dir));
// Realizar una operación de escritura
int j = ?0;
byte[] buffer = nuevo byte[1024];
while(( j = fis.read(buffer)) > 0){
out.write (buffer ,0,j);
}
//cerrar el flujo de entrada
fis.close();
}
}
public static void main(String[] args){
CompressedFileUtil comprimidoFileUtil = nuevo CompressedFileUtil(
prueba {
comprimidoFileUtil.compressedFile("G:\zip", "F:\zip");
System .out.println("El archivo comprimido ha sido generado...
."") ;
} catch (Excepción e) {
System.out.println("Error en la generación del archivo de compresión...") ;
e .Chinese puede tener caracteres confusos. Esto se debe a que el método zip de Java no admite el cambio de formato de codificación. Podemos usar la clase de herramienta zip en ant.java para empaquetar. packaging. Por lo tanto, debe importar ant.jar en el directorio lib del proyecto.