Browse Source

Close the input stream after read it and remove redundant util method

pull/159/head
Decebal Suiu 7 years ago
parent
commit
6e15379429
  1. 75
      pf4j/src/main/java/ro/fortsoft/pf4j/util/Unzip.java

75
pf4j/src/main/java/ro/fortsoft/pf4j/util/Unzip.java

@ -67,59 +67,36 @@ public class Unzip {
log.debug("Extract content of '{}' to '{}'", source, destination);
// delete destination file if exists
removeDirectory(destination);
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(source));
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
try {
File file = new File(destination, zipEntry.getName());
// create intermediary directories - sometimes zip don't add them
File dir = new File(file.getParent());
dir.mkdirs();
if (zipEntry.isDirectory()) {
file.mkdirs();
} else {
byte[] buffer = new byte[1024];
int length = 0;
FileOutputStream fos = new FileOutputStream(file);
while ((length = zipInputStream.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
fos.close();
}
} catch (FileNotFoundException e) {
log.error("File '{}' not found", zipEntry.getName());
}
}
zipInputStream.close();
}
private boolean removeDirectory(File directory) {
if (!directory.exists()) {
return true;
if (destination.exists() && destination.isDirectory()) {
FileUtils.delete(destination.toPath());
}
if (!directory.isDirectory()) {
return false;
}
File[] files = directory.listFiles();
for (File file : files) {
if (file.isDirectory()) {
removeDirectory(file);
} else {
file.delete();
try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(source))) {
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
try {
File file = new File(destination, zipEntry.getName());
// create intermediary directories - sometimes zip don't add them
File dir = new File(file.getParent());
dir.mkdirs();
if (zipEntry.isDirectory()) {
file.mkdirs();
} else {
byte[] buffer = new byte[1024];
int length;
try (FileOutputStream fos = new FileOutputStream(file)) {
while ((length = zipInputStream.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
}
}
} catch (FileNotFoundException e) {
log.error("File '{}' not found", zipEntry.getName());
}
}
}
return directory.delete();
}
}

Loading…
Cancel
Save