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)