[COMPRESS-362] Bullet-proof code using try-with-resources statements.
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
index c3d8e6a..1a7014b 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
@@ -228,18 +228,12 @@
     
     private StartHeader readStartHeader(final long startHeaderCrc) throws IOException {
         final StartHeader startHeader = new StartHeader();
-        DataInputStream dataInputStream = null;
-        try {
-             dataInputStream = new DataInputStream(new CRC32VerifyingInputStream(
-                    new BoundedRandomAccessFileInputStream(file, 20), 20, startHeaderCrc));
+        try (DataInputStream dataInputStream = new DataInputStream(new CRC32VerifyingInputStream(
+                new BoundedRandomAccessFileInputStream(file, 20), 20, startHeaderCrc))) {
              startHeader.nextHeaderOffset = Long.reverseBytes(dataInputStream.readLong());
              startHeader.nextHeaderSize = Long.reverseBytes(dataInputStream.readLong());
              startHeader.nextHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(dataInputStream.readInt());
              return startHeader;
-        } finally {
-            if (dataInputStream != null) {
-                dataInputStream.close();
-            }
         }
     }
     
@@ -910,9 +904,9 @@
             // In solid compression mode we need to decompress all leading folder'
             // streams to get access to an entry. We defer this until really needed
             // so that entire blocks can be skipped without wasting time for decompression.
-            final InputStream stream = deferredBlockStreams.remove(0);
-            IOUtils.skip(stream, Long.MAX_VALUE);
-            stream.close();
+            try (final InputStream stream = deferredBlockStreams.remove(0)) {
+                IOUtils.skip(stream, Long.MAX_VALUE);
+            }
         }
 
         return deferredBlockStreams.get(0);
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 09a312c..7c10d37 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
@@ -92,11 +92,8 @@
      * @throws IOException    If writing fails
      */
     public void addArchiveEntry(final ZipArchiveEntryRequest zipArchiveEntryRequest) throws IOException {
-        final InputStream payloadStream = zipArchiveEntryRequest.getPayloadStream();
-        try {
+        try (final InputStream payloadStream = zipArchiveEntryRequest.getPayloadStream()) {
             streamCompressor.deflate(payloadStream, zipArchiveEntryRequest.getMethod());
-        } finally {
-            payloadStream.close();
         }
         items.add(new CompressedEntry(zipArchiveEntryRequest, streamCompressor.getCrc32(),
                                       streamCompressor.getBytesWrittenForLastEntry(), streamCompressor.getBytesRead()));
diff --git a/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
index 93bc8c3..e8630a7 100644
--- a/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
@@ -168,27 +168,26 @@
     private Pack200CompressorInputStream(final InputStream in, final File f,
                                          final Pack200Strategy mode,
                                          final Map<String, String> props)
-        throws IOException {
+            throws IOException {
         originalInput = in;
         streamBridge = mode.newStreamBridge();
-        final JarOutputStream jarOut = new JarOutputStream(streamBridge);
-        final Pack200.Unpacker u = Pack200.newUnpacker();
-        if (props != null) {
-            u.properties().putAll(props);
-        }
-        if (f == null) {
-            u.unpack(new FilterInputStream(in) {
+        try (final JarOutputStream jarOut = new JarOutputStream(streamBridge)) {
+            final Pack200.Unpacker u = Pack200.newUnpacker();
+            if (props != null) {
+                u.properties().putAll(props);
+            }
+            if (f == null) {
+                u.unpack(new FilterInputStream(in) {
                     @Override
-                        public void close() {
+                    public void close() {
                         // unpack would close this stream but we
                         // want to give the user code more control
                     }
-                },
-                jarOut);
-        } else {
-            u.unpack(f, jarOut);
+                }, jarOut);
+            } else {
+                u.unpack(f, jarOut);
+            }
         }
-        jarOut.close();
     }
 
     @Override