]> source.dussan.org Git - pf4j.git/commitdiff
Close the input stream after read it and remove redundant util method
authorDecebal Suiu <decebal.suiu@gmail.com>
Fri, 28 Jul 2017 20:25:01 +0000 (23:25 +0300)
committerDecebal Suiu <decebal.suiu@gmail.com>
Fri, 28 Jul 2017 20:25:01 +0000 (23:25 +0300)
pf4j/src/main/java/ro/fortsoft/pf4j/util/Unzip.java

index fc9f6d06207b666ca52943ad7b8ba42d8a617434..bcf6c9d5ab0a269a8b517fd5f52b46b1fbde7c20 100644 (file)
@@ -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();
     }
 
 }