DESCARGAR ZIP CON FICHEROS COMPRIMIDOS DESDE JAVA
Publicado por Giancarlo (1 intervención) el 30/03/2021 00:44:29
Hola, quisiera que me puedan ayudar por favor, estoy tratando de comprimir solo algunos ficheros de una carpeta y luego comprimirlo en un zip para que pueda ser descargado, pero se me a complicado ya que no e encontrado en internet algo que me pueda ayudar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
String directorioZip = realPath + "/temporal/";
// ruta completa donde están los archivos a comprimir
File carpetaComprimir = new File(directorioZip);
List<File> fileList = new ArrayList<>();
// valida si existe el directorio
if (carpetaComprimir.exists()) {
// lista los archivos que hay dentro del directorio
File[] ficheros = carpetaComprimir.listFiles();
System.out.println("Número de ficheros encontrados: " + ficheros.length);
// ciclo para recorrer todos los archivos a comprimir
for (int i = 0; i < ficheros.length; i++) {
if(ficheros[i].getName().equals("cliente001.pdf")) {
fileList.add(ficheros[i]);
System.out.println("Nombre del fichero: " + ficheros[i].getName());
}
}
// ciclo para recorrer todos los archivos a comprimir
for (int i = 0; i < fileList.size(); i++) {
System.out.println("Nombre del fichero file list: " + fileList.get(i).getName());
// crea un buffer temporal para ir poniendo los archivos a comprimir
ZipOutputStream zous = new ZipOutputStream(new FileOutputStream(directorioZip + fileList.get(i).getName().replace(".pdf", ".zip")));
//nombre con el que se va guardar el archivo dentro del zip
ZipEntry entrada = new ZipEntry(ficheros[i].getName());
zous.putNextEntry(entrada);
//System.out.println("Nombre del Archivo: " + entrada.getName());
System.out.println("Comprimiendo.....");
//obtiene el archivo para irlo comprimiendo
FileInputStream fis = new FileInputStream(directorioZip+entrada.getName());
int leer;
byte[] buffer = new byte[1024];
while (0 < (leer = fis.read(buffer))) {
zous.write(buffer, 0, leer);
}
fis.close();
zous.closeEntry();
zous.close();
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
file = new File(rutaDestinoTotal);
download = new DefaultStreamedContent(fis, externalContext.getMimeType(directorioZip+entrada.getName()), directorioZip+entrada.getName());
Valora esta pregunta


0