Java - DESCARGAR ZIP CON FICHEROS COMPRIMIDOS DESDE JAVA

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder