This repository has been archived on 2023-10-27. You can view files and clone it, but cannot push or open issues or pull requests.
McGamerZone/commons/src/main/java/zone/themcgamer/common/ZipUtils.java

71 lines
2.7 KiB
Java
Raw Normal View History

2021-02-19 20:11:08 +00:00
package zone.themcgamer.common;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* @author Braydon
*/
public class ZipUtils {
/**
* Zip the given directory
2021-05-02 18:54:10 +00:00
*
2021-02-19 20:11:08 +00:00
* @param sourceDirectoryPath the path of the directory to zip
* @param zipDirectoryPath the path of the output file
*/
public static void zip(String sourceDirectoryPath, String zipDirectoryPath) {
try {
Path zipPath = Files.createFile(Paths.get(zipDirectoryPath));
try (ZipOutputStream zipOutputStream = new ZipOutputStream(Files.newOutputStream(zipPath))) {
Path sourcePath = Paths.get(sourceDirectoryPath);
for (Path path : Files.walk(sourcePath).filter(path -> !Files.isDirectory(path)).collect(Collectors.toList())) {
ZipEntry zipEntry = new ZipEntry(sourcePath.relativize(path).toString());
zipOutputStream.putNextEntry(zipEntry);
Files.copy(path, zipOutputStream);
zipOutputStream.closeEntry();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void unzip(File source, File output) throws IOException {
long started = System.currentTimeMillis();
FileInputStream fileInputStream = new FileInputStream(source);
ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
ZipEntry entry = zipInputStream.getNextEntry();
while (entry != null) {
File file = new File(output, entry.getName());
if (entry.isDirectory())
file.mkdirs();
else {
File parent = file.getParentFile();
if (!parent.exists())
parent.mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte[] buffer = new byte[1024];
int location;
while ((location = zipInputStream.read(buffer)) != -1)
bufferedOutputStream.write(buffer, 0, location);
bufferedOutputStream.close();
fileOutputStream.close();
}
entry = zipInputStream.getNextEntry();
}
fileInputStream.close();
zipInputStream.closeEntry();
zipInputStream.close();
System.out.println("Finished unzip process for \"" + source.getPath() + "\" in " + (System.currentTimeMillis() - started) + "ms");
}
}