]> source.dussan.org Git - poi.git/commitdiff
close streams if an exception is throw
authorJaven O'Neal <onealj@apache.org>
Sat, 9 Jul 2016 06:30:12 +0000 (06:30 +0000)
committerJaven O'Neal <onealj@apache.org>
Sat, 9 Jul 2016 06:30:12 +0000 (06:30 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751983 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/poifs/dev/POIFSDump.java

index 37d2dc31e42de32cd1f15dccea283fd31cd2e43a..9d53d2185cd43c95195e086d237896862a1f7f11 100644 (file)
@@ -63,32 +63,37 @@ public class POIFSDump {
 
             System.out.println("Dumping " + filename);
             FileInputStream is = new FileInputStream(filename);
-            NPOIFSFileSystem fs = new NPOIFSFileSystem(is);
-            is.close();
-
-            DirectoryEntry root = fs.getRoot();
-            File file = new File(new File(filename).getName(), root.getName());
-            if (!file.exists() && !file.mkdirs()) {
-                throw new IOException("Could not create directory " + file);
-            }
-
-            dump(root, file);
-
-            if (dumpProps) {
-                HeaderBlock header = fs.getHeaderBlock();
-                dump(fs, header.getPropertyStart(), "properties", file);
+            NPOIFSFileSystem fs;
+            try {
+                fs = new NPOIFSFileSystem(is);
+            } finally {
+                is.close();
             }
-            if (dumpMini) {
-                NPropertyTable props = fs.getPropertyTable();
-                int startBlock = props.getRoot().getStartBlock();
-                if (startBlock == POIFSConstants.END_OF_CHAIN) {
-                    System.err.println("No Mini Stream in file");
-                } else {
-                    dump(fs, startBlock, "mini-stream", file);
+            try {
+                DirectoryEntry root = fs.getRoot();
+                File file = new File(new File(filename).getName(), root.getName());
+                if (!file.exists() && !file.mkdirs()) {
+                    throw new IOException("Could not create directory " + file);
                 }
+    
+                dump(root, file);
+    
+                if (dumpProps) {
+                    HeaderBlock header = fs.getHeaderBlock();
+                    dump(fs, header.getPropertyStart(), "properties", file);
+                }
+                if (dumpMini) {
+                    NPropertyTable props = fs.getPropertyTable();
+                    int startBlock = props.getRoot().getStartBlock();
+                    if (startBlock == POIFSConstants.END_OF_CHAIN) {
+                        System.err.println("No Mini Stream in file");
+                    } else {
+                        dump(fs, startBlock, "mini-stream", file);
+                    }
+                }
+            } finally {
+                fs.close();
             }
-
-            fs.close();
         }
     }