Verified Commit 5632b491 authored by Lukas Wiest's avatar Lukas Wiest 🚂
Browse files

feat(util): add archive extraction utility

parent 0c799d5f
package de.hftstuttgart.utils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.*;
import java.nio.file.Path;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ArchiveUtil
{
private static final Logger LOG = LogManager.getLogger(ArchiveUtil.class);
public static void extractProjectFromZip (InputStream is, Path outDir) throws IOException
{
LOG.info(String.format("starting archive extraction to %s", outDir.toAbsolutePath().toString()));
try (ZipInputStream stream = new ZipInputStream(is)) {
ZipEntry entry;
while ((entry = stream.getNextEntry()) != null) {
File file = outDir.resolve(entry.getName()).toFile();
LOG.debug(String.format("processing entry %s", file.getAbsolutePath()));
if (!entry.isDirectory()) {
LOG.debug("creating parent folders");
file.getParentFile().mkdirs();
LOG.debug("creating new file");
file.createNewFile();
byte[] buffer = new byte[2048];
try (FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length)) {
LOG.debug("writing content from zip entry to file");
int len;
while ((len = stream.read(buffer)) > 0) {
bos.write(buffer, 0, len);
}
}
}
}
}
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment