Saltar al contenido

cómo comprimir una carpeta usando java

Estuvimos recabado por todo el mundo on line y así traerte la solución para tu inquietud, si continúas con alguna difcultad déjanos un comentario y te responderemos porque estamos para ayudarte.

Solución:

¿Has probado la biblioteca Zip de Zeroturnaround? ¡Es realmente genial! Comprimir una carpeta es solo una línea:

ZipUtil.pack(new File("D:\reports\january\"), new File("D:\reports\january.zip"));

(gracias a Oleg Šelajev por el ejemplo)

Aquí está el ejemplo de Java 8+:

public static void pack(String sourceDirPath, String zipFilePath) throws IOException 
    Path p = Files.createFile(Paths.get(zipFilePath));
    try (ZipOutputStream zs = new ZipOutputStream(Files.newOutputStream(p))) 
        Path pp = Paths.get(sourceDirPath);
        Files.walk(pp)
          .filter(path -> !Files.isDirectory(path))
          .forEach(path -> 
              ZipEntry zipEntry = new ZipEntry(pp.relativize(path).toString());
              try 
                  zs.putNextEntry(zipEntry);
                  Files.copy(path, zs);
                  zs.closeEntry();
             catch (IOException e) 
                System.err.println(e);
            
          );
    

Se puede resolver fácilmente por paquete. java.util.Zip no necesita ningún extra Jar archivos

Simplemente copie el siguiente código y run it con tu IDE

//Import all needed packages
package general;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtils 

    private List  fileList;
    private static final String OUTPUT_ZIP_FILE = "Folder.zip";
    private static final String SOURCE_FOLDER = "D:\Reports"; // SourceFolder path

    public ZipUtils() 
        fileList = new ArrayList < String > ();
    

    public static void main(String[] args) 
        ZipUtils appZip = new ZipUtils();
        appZip.generateFileList(new File(SOURCE_FOLDER));
        appZip.zipIt(OUTPUT_ZIP_FILE);
    

    public void zipIt(String zipFile) 
        byte[] buffer = new byte[1024];
        String source = new File(SOURCE_FOLDER).getName();
        FileOutputStream fos = null;
        ZipOutputStream zos = null;
        try 
            fos = new FileOutputStream(zipFile);
            zos = new ZipOutputStream(fos);

            System.out.println("Output to Zip : " + zipFile);
            FileInputStream in = null;

            for (String file: this.fileList) 
                System.out.println("File Added : " + file);
                ZipEntry ze = new ZipEntry(source + File.separator + file);
                zos.putNextEntry(ze);
                try 
                    in = new FileInputStream(SOURCE_FOLDER + File.separator + file);
                    int len;
                    while ((len = in .read(buffer)) > 0) 
                        zos.write(buffer, 0, len);
                    
                 finally 
                    in.close();
                
            

            zos.closeEntry();
            System.out.println("Folder successfully compressed");

         catch (IOException ex) 
            ex.printStackTrace();
         finally 
            try 
                zos.close();
             catch (IOException e) 
                e.printStackTrace();
            
        
    

    public void generateFileList(File node) 
        // add file only
        if (node.isFile()) 
            fileList.add(generateZipEntry(node.toString()));
        

        if (node.isDirectory()) 
            String[] subNote = node.list();
            for (String filename: subNote) 
                generateFileList(new File(node, filename));
            
        
    

    private String generateZipEntry(String file) 
        return file.substring(SOURCE_FOLDER.length() + 1, file.length());
    

Consulte mkyong… Cambié el código para el requisito de la pregunta actual

Si estás de acuerdo, puedes dejar un ensayo acerca de qué te ha gustado de esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *