Red de conocimiento informático - Material del sitio web - Cómo comprimir una carpeta en un paquete zip usando Java

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;?

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;?

/**? *?¿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!") ;?

}?

}

}

}?