[COMPRESS-362] Bullet-proof code using try-with-resources statements.
diff --git a/src/main/java/org/apache/commons/compress/archivers/Lister.java b/src/main/java/org/apache/commons/compress/archivers/Lister.java
index 19796d6..653b8f9 100644
--- a/src/main/java/org/apache/commons/compress/archivers/Lister.java
+++ b/src/main/java/org/apache/commons/compress/archivers/Lister.java
@@ -44,20 +44,23 @@
         if (!f.isFile()) {
             System.err.println(f + " doesn't exist or is a directory");
         }
-        final InputStream fis = new BufferedInputStream(new FileInputStream(f));
-        ArchiveInputStream ais;
+        try (final InputStream fis = new BufferedInputStream(new FileInputStream(f));
+                final ArchiveInputStream ais = createArchiveInputStream(args, fis)) {
+            System.out.println("Created " + ais.toString());
+            ArchiveEntry ae;
+            while ((ae = ais.getNextEntry()) != null) {
+                System.out.println(ae.getName());
+            }
+        }
+    }
+
+    private static ArchiveInputStream createArchiveInputStream(final String[] args, final InputStream fis)
+            throws ArchiveException {
         if (args.length > 1) {
-            ais = factory.createArchiveInputStream(args[1], fis);
+            return factory.createArchiveInputStream(args[1], fis);
         } else {
-            ais = factory.createArchiveInputStream(fis);
+            return factory.createArchiveInputStream(fis);
         }
-        System.out.println("Created " + ais.toString());
-        ArchiveEntry ae;
-        while ((ae = ais.getNextEntry()) != null) {
-            System.out.println(ae.getName());
-        }
-        ais.close();
-        fis.close();
     }
 
     private static void usage() {
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
index 1252fcf..58e52ee 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
@@ -82,8 +82,7 @@
                 if (parent != null && !parent.exists() && !parent.mkdirs()) {
                     throw new IOException("Cannot create " + parent);
                 }
-                final FileOutputStream fos = new FileOutputStream(outFile);
-                try {
+                try (final FileOutputStream fos = new FileOutputStream(outFile)) {
                     final long total = entry.getSize();
                     long off = 0;
                     while (off < total) {
@@ -99,8 +98,6 @@
                         off += bytesRead;
                         fos.write(BUF, 0, bytesRead);
                     }
-                } finally {
-                    fos.close();
                 }
             }
         };
@@ -127,14 +124,11 @@
         if (!f.isFile()) {
             System.err.println(f + " doesn't exist or is a directory");
         }
-        final SevenZFile archive = new SevenZFile(f);
-        try {
+        try (final SevenZFile archive = new SevenZFile(f)) {
             SevenZArchiveEntry ae;
             while((ae=archive.getNextEntry()) != null) {
                 mode.takeAction(archive, ae);
             }
-        } finally {
-            archive.close();
         }
     }
 
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
index de64243..09a312c 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
@@ -110,13 +110,14 @@
      */
     public void writeTo(final ZipArchiveOutputStream target) throws IOException {
         backingStore.closeForWriting();
-        final InputStream data = backingStore.getInputStream();
-        for (final CompressedEntry compressedEntry : items) {
-            final BoundedInputStream rawStream = new BoundedInputStream(data, compressedEntry.compressedSize);
-            target.addRawArchiveEntry(compressedEntry.transferToArchiveEntry(), rawStream);
-            rawStream.close();
+        try (final InputStream data = backingStore.getInputStream()) {
+            for (final CompressedEntry compressedEntry : items) {
+                try (final BoundedInputStream rawStream = new BoundedInputStream(data,
+                        compressedEntry.compressedSize)) {
+                    target.addRawArchiveEntry(compressedEntry.transferToArchiveEntry(), rawStream);
+                }
+            }
         }
-        data.close();
     }