zip file write and download in java code example
Example 1: zip file java
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipCompress {
public static void compress(String dirPath) {
final Path sourceDir = Paths.get(dirPath);
String zipFileName = dirPath.concat(".zip");
try {
final ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFileName));
Files.walkFileTree(sourceDir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) {
try {
Path targetFile = sourceDir.relativize(file);
outputStream.putNextEntry(new ZipEntry(targetFile.toString()));
byte[] bytes = Files.readAllBytes(file);
outputStream.write(bytes, 0, bytes.length);
outputStream.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
return FileVisitResult.CONTINUE;
}
});
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Example 2: Java create zip file
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class zip {
public static void main(String[] args) {
zipFolder(mapFolder("Test"));
System.out.println("Done");
}
public static List<String> mapFolder(String path, boolean includeEmptyFolders) {
List<String> map = new ArrayList<String>();
List<String> unmappedDirs = new ArrayList<String>();
File[] items = new File(path).listFiles();
if (!path.substring(path.length() - 1).equals("/")) {
path += "/";
}
if (items != null) {
for (File item : items) {
if (item.isFile()) {
map.add(path+item.getName());
} else {
unmappedDirs.add(path+item.getName());
}
}
if (!unmappedDirs.isEmpty()) {
for (String folder : unmappedDirs) {
List<String> temp = mapFolder(folder, includeEmptyFolders);
if (!temp.isEmpty()) {
for (String item : temp)
map.add(item);
} else if (includeEmptyFolders == true) {
map.add(folder+"/");
}
}
}
}
return map;
}
public static void zipFolder(String zipPath, List<String> items) {
try {
FileOutputStream f = new FileOutputStream(zipPath);
ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(f));
for (String item : items) {
String contents = String.join("\n", Files.readAllLines(Paths.get(item)));
zip.putNextEntry(new ZipEntry(item));
byte[] data = contents.getBytes();
zip.write(data, 0, data.length);
zip.closeEntry();
}
zip.close();
f.close();
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
}