You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/12/02 13:36:54 UTC

[commons-compress] 04/04: Use try-with-resources

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git

commit 0516cc6a9c00fc20ca0a81f4f406b6ccc424b749
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Dec 2 08:36:45 2022 -0500

    Use try-with-resources
---
 .../compress/archivers/zip/ZipFileTest.java        | 582 ++++++++++-----------
 1 file changed, 282 insertions(+), 300 deletions(-)

diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
index 5a543413..9f1056ba 100644
--- a/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java
@@ -56,6 +56,7 @@ import org.apache.commons.compress.utils.IOUtils;
 import org.apache.commons.compress.utils.SeekableInMemoryByteChannel;
 import org.junit.Assert;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assumptions;
 import org.junit.jupiter.api.Test;
 
 public class ZipFileTest {
@@ -102,31 +103,33 @@ public class ZipFileTest {
             data = IOUtils.toByteArray(fis);
         }
 
-        zf = new ZipFile(new SeekableInMemoryByteChannel(data), ZipEncodingHelper.UTF8);
-        final ArrayList<ZipArchiveEntry> l = Collections.list(zf.getEntries());
-        assertEntryName(l, 0, "AbstractUnicodeExtraField");
-        assertEntryName(l, 1, "AsiExtraField");
-        assertEntryName(l, 2, "ExtraFieldUtils");
-        assertEntryName(l, 3, "FallbackZipEncoding");
-        assertEntryName(l, 4, "GeneralPurposeBit");
-        assertEntryName(l, 5, "JarMarker");
-        assertEntryName(l, 6, "NioZipEncoding");
-        assertEntryName(l, 7, "Simple8BitZipEncoding");
-        assertEntryName(l, 8, "UnicodeCommentExtraField");
-        assertEntryName(l, 9, "UnicodePathExtraField");
-        assertEntryName(l, 10, "UnixStat");
-        assertEntryName(l, 11, "UnparseableExtraFieldData");
-        assertEntryName(l, 12, "UnrecognizedExtraField");
-        assertEntryName(l, 13, "ZipArchiveEntry");
-        assertEntryName(l, 14, "ZipArchiveInputStream");
-        assertEntryName(l, 15, "ZipArchiveOutputStream");
-        assertEntryName(l, 16, "ZipEncoding");
-        assertEntryName(l, 17, "ZipEncodingHelper");
-        assertEntryName(l, 18, "ZipExtraField");
-        assertEntryName(l, 19, "ZipUtil");
-        assertEntryName(l, 20, "ZipLong");
-        assertEntryName(l, 21, "ZipShort");
-        assertEntryName(l, 22, "ZipFile");
+        try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(data)) {
+            zf = new ZipFile(channel, ZipEncodingHelper.UTF8);
+            final ArrayList<ZipArchiveEntry> l = Collections.list(zf.getEntries());
+            assertEntryName(l, 0, "AbstractUnicodeExtraField");
+            assertEntryName(l, 1, "AsiExtraField");
+            assertEntryName(l, 2, "ExtraFieldUtils");
+            assertEntryName(l, 3, "FallbackZipEncoding");
+            assertEntryName(l, 4, "GeneralPurposeBit");
+            assertEntryName(l, 5, "JarMarker");
+            assertEntryName(l, 6, "NioZipEncoding");
+            assertEntryName(l, 7, "Simple8BitZipEncoding");
+            assertEntryName(l, 8, "UnicodeCommentExtraField");
+            assertEntryName(l, 9, "UnicodePathExtraField");
+            assertEntryName(l, 10, "UnixStat");
+            assertEntryName(l, 11, "UnparseableExtraFieldData");
+            assertEntryName(l, 12, "UnrecognizedExtraField");
+            assertEntryName(l, 13, "ZipArchiveEntry");
+            assertEntryName(l, 14, "ZipArchiveInputStream");
+            assertEntryName(l, 15, "ZipArchiveOutputStream");
+            assertEntryName(l, 16, "ZipEncoding");
+            assertEntryName(l, 17, "ZipEncodingHelper");
+            assertEntryName(l, 18, "ZipExtraField");
+            assertEntryName(l, 19, "ZipUtil");
+            assertEntryName(l, 20, "ZipLong");
+            assertEntryName(l, 21, "ZipShort");
+            assertEntryName(l, 22, "ZipFile");
+        }
     }
 
     @Test
@@ -184,37 +187,29 @@ public class ZipFileTest {
     @Test
     public void testReadingOfStoredEntry() throws Exception {
         final File f = File.createTempFile("commons-compress-zipfiletest", ".zip");
-        f.deleteOnExit();
-        OutputStream o = null;
-        InputStream i = null;
         try {
-            o = Files.newOutputStream(f.toPath());
-            final ZipArchiveOutputStream zo = new ZipArchiveOutputStream(o);
-            ZipArchiveEntry ze = new ZipArchiveEntry("foo");
-            ze.setMethod(ZipEntry.STORED);
-            ze.setSize(4);
-            ze.setCrc(0xb63cfbcdL);
-            zo.putArchiveEntry(ze);
-            zo.write(new byte[] { 1, 2, 3, 4 });
-            zo.closeArchiveEntry();
-            zo.close();
-            o.close();
-            o  = null;
+            f.deleteOnExit();
+            ZipArchiveEntry ze;
+            try (OutputStream o = Files.newOutputStream(f.toPath());
+                 ZipArchiveOutputStream zo = new ZipArchiveOutputStream(o)) {
+                ze = new ZipArchiveEntry("foo");
+                ze.setMethod(ZipEntry.STORED);
+                ze.setSize(4);
+                ze.setCrc(0xb63cfbcdL);
+                zo.putArchiveEntry(ze);
+                zo.write(new byte[] { 1, 2, 3, 4 });
+                zo.closeArchiveEntry();
+            }
 
             zf = new ZipFile(f);
             ze = zf.getEntry("foo");
             assertNotNull(ze);
-            i = zf.getInputStream(ze);
-            final byte[] b = new byte[4];
-            assertEquals(4, i.read(b));
-            assertEquals(-1, i.read());
-        } finally {
-            if (o != null) {
-                o.close();
-            }
-            if (i != null) {
-                i.close();
+            try (InputStream i = zf.getInputStream(ze)) {
+                final byte[] b = new byte[4];
+                assertEquals(4, i.read(b));
+                assertEquals(-1, i.read());
             }
+        } finally {
             f.delete();
         }
     }
@@ -293,14 +288,18 @@ public class ZipFileTest {
 
         final ZipArchiveEntry ze = zf.getEntry("test1.txt");
         assertNotNull(ze);
-        assertNotNull(zf.getInputStream(ze));
-
-        int numberOfEntries = 0;
-        for (final ZipArchiveEntry entry : zf.getEntries("test1.txt")) {
-            numberOfEntries++;
-            assertNotNull(zf.getInputStream(entry));
+        try (InputStream inputStream = zf.getInputStream(ze)) {
+            assertNotNull(inputStream);
+
+            int numberOfEntries = 0;
+            for (final ZipArchiveEntry entry : zf.getEntries("test1.txt")) {
+                numberOfEntries++;
+                try (InputStream inputStream2 = zf.getInputStream(entry)) {
+                    assertNotNull(inputStream2);
+                }
+            }
+            assertEquals(2, numberOfEntries);
         }
-        assertEquals(2, numberOfEntries);
     }
 
     /**
@@ -320,20 +319,14 @@ public class ZipFileTest {
     public void testUnshrinking() throws Exception {
         zf = new ZipFile(getFile("SHRUNK.ZIP"));
         ZipArchiveEntry test = zf.getEntry("TEST1.XML");
-        InputStream original = Files.newInputStream(getFile("test1.xml").toPath());
-        try {
-            assertArrayEquals(IOUtils.toByteArray(original),
-                              IOUtils.toByteArray(zf.getInputStream(test)));
-        } finally {
-            original.close();
+        try (InputStream original = Files.newInputStream(getFile("test1.xml").toPath());
+             InputStream inputStream = zf.getInputStream(test)) {
+            assertArrayEquals(IOUtils.toByteArray(original), IOUtils.toByteArray(inputStream));
         }
         test = zf.getEntry("TEST2.XML");
-        original = Files.newInputStream(getFile("test2.xml").toPath());
-        try {
-            assertArrayEquals(IOUtils.toByteArray(original),
-                              IOUtils.toByteArray(zf.getInputStream(test)));
-        } finally {
-            original.close();
+        try (InputStream original = Files.newInputStream(getFile("test2.xml").toPath());
+             InputStream inputStream = zf.getInputStream(test)) {
+            assertArrayEquals(IOUtils.toByteArray(original), IOUtils.toByteArray(inputStream));
         }
     }
 
@@ -348,8 +341,9 @@ public class ZipFileTest {
         zf = new ZipFile(archive);
         final ZipArchiveEntry ze = zf.getEntry("test.txt");
         assertEquals(5, ze.getSize());
-        assertArrayEquals(new byte[] {'d', 'a', 't', 'a', '\n'},
-                          IOUtils.toByteArray(zf.getInputStream(ze)));
+        try (InputStream inputStream = zf.getInputStream(ze)) {
+            assertArrayEquals(new byte[] { 'd', 'a', 't', 'a', '\n' }, IOUtils.toByteArray(inputStream));
+        }
     }
 
     @Test
@@ -359,9 +353,10 @@ public class ZipFileTest {
         final ZipArchiveEntry ze = zf.getEntry("lots-of-as");
         assertEquals(42, ze.getSize());
         final byte[] expected = new byte[42];
-        Arrays.fill(expected , (byte)'a');
-        assertArrayEquals(expected, IOUtils.toByteArray(zf.getInputStream(ze)));
-    }
+        Arrays.fill(expected, (byte) 'a');
+        try (InputStream inputStream = zf.getInputStream(ze)) {
+            assertArrayEquals(expected, IOUtils.toByteArray(inputStream));
+        }}
 
     @Test
     public void testConcurrentReadSeekable() throws Exception {
@@ -370,27 +365,30 @@ public class ZipFileTest {
         try (InputStream fis = Files.newInputStream(getFile("mixed.zip").toPath())) {
             data = IOUtils.toByteArray(fis);
         }
-        zf = new ZipFile(new SeekableInMemoryByteChannel(data), ZipEncodingHelper.UTF8);
-
-        final Map<String, byte[]> content = new HashMap<>();
-        for (final ZipArchiveEntry entry: Collections.list(zf.getEntries())) {
-            content.put(entry.getName(), IOUtils.toByteArray(zf.getInputStream(entry)));
+        try (final SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(data)) {
+            zf = new ZipFile(channel, ZipEncodingHelper.UTF8);
+
+            final Map<String, byte[]> content = new HashMap<>();
+            for (final ZipArchiveEntry entry : Collections.list(zf.getEntries())) {
+                try (InputStream inputStream = zf.getInputStream(entry)) {
+                    content.put(entry.getName(), IOUtils.toByteArray(inputStream));
+                }}
+
+            final AtomicInteger passedCount = new AtomicInteger();
+            final Runnable run = () -> {
+                for (final ZipArchiveEntry entry : Collections.list(zf.getEntries())) {
+                    assertAllReadMethods(content.get(entry.getName()), zf, entry);
+                }
+                passedCount.incrementAndGet();
+            };
+            final Thread t0 = new Thread(run);
+            final Thread t1 = new Thread(run);
+            t0.start();
+            t1.start();
+            t0.join();
+            t1.join();
+            assertEquals(2, passedCount.get());
         }
-
-        final AtomicInteger passedCount = new AtomicInteger();
-        final Runnable run = () -> {
-            for (final ZipArchiveEntry entry: Collections.list(zf.getEntries())) {
-                assertAllReadMethods(content.get(entry.getName()), zf, entry);
-            }
-            passedCount.incrementAndGet();
-        };
-        final Thread t0 = new Thread(run);
-        final Thread t1 = new Thread(run);
-        t0.start();
-        t1.start();
-        t0.join();
-        t1.join();
-        assertEquals(2, passedCount.get());
     }
 
     @Test
@@ -400,8 +398,10 @@ public class ZipFileTest {
         zf = new ZipFile(archive);
 
         final Map<String, byte[]> content = new HashMap<>();
-        for (final ZipArchiveEntry entry: Collections.list(zf.getEntries())) {
-            content.put(entry.getName(), IOUtils.toByteArray(zf.getInputStream(entry)));
+        for (final ZipArchiveEntry entry : Collections.list(zf.getEntries())) {
+            try (final InputStream inputStream = zf.getInputStream(entry)) {
+                content.put(entry.getName(), IOUtils.toByteArray(inputStream));
+            }
         }
 
         final AtomicInteger passedCount = new AtomicInteger();
@@ -484,95 +484,87 @@ public class ZipFileTest {
      */
     @Test
     public void testEntryAlignment() throws Exception {
-        final SeekableInMemoryByteChannel zipContent = new SeekableInMemoryByteChannel();
-        try (ZipArchiveOutputStream zipOutput = new ZipArchiveOutputStream(zipContent)) {
-            final ZipArchiveEntry inflatedEntry = new ZipArchiveEntry("inflated.txt");
-            inflatedEntry.setMethod(ZipEntry.DEFLATED);
-            inflatedEntry.setAlignment(1024);
-            zipOutput.putArchiveEntry(inflatedEntry);
-            zipOutput.write("Hello Deflated\n".getBytes(UTF_8));
-            zipOutput.closeArchiveEntry();
-
-            final ZipArchiveEntry storedEntry = new ZipArchiveEntry("stored.txt");
-            storedEntry.setMethod(ZipEntry.STORED);
-            storedEntry.setAlignment(1024);
-            zipOutput.putArchiveEntry(storedEntry);
-            zipOutput.write("Hello Stored\n".getBytes(UTF_8));
-            zipOutput.closeArchiveEntry();
+        try (SeekableInMemoryByteChannel zipContent = new SeekableInMemoryByteChannel()) {
+            try (ZipArchiveOutputStream zipOutput = new ZipArchiveOutputStream(zipContent)) {
+                final ZipArchiveEntry inflatedEntry = new ZipArchiveEntry("inflated.txt");
+                inflatedEntry.setMethod(ZipEntry.DEFLATED);
+                inflatedEntry.setAlignment(1024);
+                zipOutput.putArchiveEntry(inflatedEntry);
+                zipOutput.write("Hello Deflated\n".getBytes(UTF_8));
+                zipOutput.closeArchiveEntry();
+
+                final ZipArchiveEntry storedEntry = new ZipArchiveEntry("stored.txt");
+                storedEntry.setMethod(ZipEntry.STORED);
+                storedEntry.setAlignment(1024);
+                zipOutput.putArchiveEntry(storedEntry);
+                zipOutput.write("Hello Stored\n".getBytes(UTF_8));
+                zipOutput.closeArchiveEntry();
+
+                final ZipArchiveEntry storedEntry2 = new ZipArchiveEntry("stored2.txt");
+                storedEntry2.setMethod(ZipEntry.STORED);
+                storedEntry2.setAlignment(1024);
+                storedEntry2.addExtraField(new ResourceAlignmentExtraField(1));
+                zipOutput.putArchiveEntry(storedEntry2);
+                zipOutput.write("Hello overload-alignment Stored\n".getBytes(UTF_8));
+                zipOutput.closeArchiveEntry();
+
+                final ZipArchiveEntry storedEntry3 = new ZipArchiveEntry("stored3.txt");
+                storedEntry3.setMethod(ZipEntry.STORED);
+                storedEntry3.addExtraField(new ResourceAlignmentExtraField(1024));
+                zipOutput.putArchiveEntry(storedEntry3);
+                zipOutput.write("Hello copy-alignment Stored\n".getBytes(UTF_8));
+                zipOutput.closeArchiveEntry();
 
-            final ZipArchiveEntry storedEntry2 = new ZipArchiveEntry("stored2.txt");
-            storedEntry2.setMethod(ZipEntry.STORED);
-            storedEntry2.setAlignment(1024);
-            storedEntry2.addExtraField(new ResourceAlignmentExtraField(1));
-            zipOutput.putArchiveEntry(storedEntry2);
-            zipOutput.write("Hello overload-alignment Stored\n".getBytes(UTF_8));
-            zipOutput.closeArchiveEntry();
-
-            final ZipArchiveEntry storedEntry3 = new ZipArchiveEntry("stored3.txt");
-            storedEntry3.setMethod(ZipEntry.STORED);
-            storedEntry3.addExtraField(new ResourceAlignmentExtraField(1024));
-            zipOutput.putArchiveEntry(storedEntry3);
-            zipOutput.write("Hello copy-alignment Stored\n".getBytes(UTF_8));
-            zipOutput.closeArchiveEntry();
-
-        }
-
-        try (ZipFile zf = new ZipFile(new SeekableInMemoryByteChannel(
-                        Arrays.copyOfRange(zipContent.array(), 0, (int)zipContent.size())
-        ))) {
-            final ZipArchiveEntry inflatedEntry = zf.getEntry("inflated.txt");
-            final ResourceAlignmentExtraField inflatedAlignmentEx =
-                            (ResourceAlignmentExtraField)inflatedEntry.getExtraField(ResourceAlignmentExtraField.ID);
-            assertNotEquals(-1L, inflatedEntry.getCompressedSize());
-            assertNotEquals(-1L, inflatedEntry.getSize());
-            assertEquals(0L, inflatedEntry.getDataOffset()%1024);
-            assertNotNull(inflatedAlignmentEx);
-            assertEquals(1024, inflatedAlignmentEx.getAlignment());
-            assertFalse(inflatedAlignmentEx.allowMethodChange());
-            try (InputStream stream = zf.getInputStream(inflatedEntry)) {
-                Assert.assertEquals("Hello Deflated\n",
-                                new String(IOUtils.toByteArray(stream), UTF_8));
-            }
-            final ZipArchiveEntry storedEntry = zf.getEntry("stored.txt");
-            final ResourceAlignmentExtraField storedAlignmentEx =
-                            (ResourceAlignmentExtraField)storedEntry.getExtraField(ResourceAlignmentExtraField.ID);
-            assertNotEquals(-1L, storedEntry.getCompressedSize());
-            assertNotEquals(-1L, storedEntry.getSize());
-            assertEquals(0L, storedEntry.getDataOffset()%1024);
-            assertNotNull(storedAlignmentEx);
-            assertEquals(1024, storedAlignmentEx.getAlignment());
-            assertFalse(storedAlignmentEx.allowMethodChange());
-            try (InputStream stream = zf.getInputStream(storedEntry)) {
-                Assert.assertEquals("Hello Stored\n",
-                                new String(IOUtils.toByteArray(stream), UTF_8));
-            }
-
-            final ZipArchiveEntry storedEntry2 = zf.getEntry("stored2.txt");
-            final ResourceAlignmentExtraField stored2AlignmentEx =
-                            (ResourceAlignmentExtraField)storedEntry2.getExtraField(ResourceAlignmentExtraField.ID);
-            assertNotEquals(-1L, storedEntry2.getCompressedSize());
-            assertNotEquals(-1L, storedEntry2.getSize());
-            assertEquals(0L, storedEntry2.getDataOffset()%1024);
-            assertNotNull(stored2AlignmentEx);
-            assertEquals(1024, stored2AlignmentEx.getAlignment());
-            assertFalse(stored2AlignmentEx.allowMethodChange());
-            try (InputStream stream = zf.getInputStream(storedEntry2)) {
-                Assert.assertEquals("Hello overload-alignment Stored\n",
-                                new String(IOUtils.toByteArray(stream), UTF_8));
             }
 
-            final ZipArchiveEntry storedEntry3 = zf.getEntry("stored3.txt");
-            final ResourceAlignmentExtraField stored3AlignmentEx =
-                            (ResourceAlignmentExtraField)storedEntry3.getExtraField(ResourceAlignmentExtraField.ID);
-            assertNotEquals(-1L, storedEntry3.getCompressedSize());
-            assertNotEquals(-1L, storedEntry3.getSize());
-            assertEquals(0L, storedEntry3.getDataOffset()%1024);
-            assertNotNull(stored3AlignmentEx);
-            assertEquals(1024, stored3AlignmentEx.getAlignment());
-            assertFalse(stored3AlignmentEx.allowMethodChange());
-            try (InputStream stream = zf.getInputStream(storedEntry3)) {
-                Assert.assertEquals("Hello copy-alignment Stored\n",
-                                new String(IOUtils.toByteArray(stream), UTF_8));
+            try (ZipFile zf = new ZipFile(new SeekableInMemoryByteChannel(Arrays.copyOfRange(zipContent.array(), 0, (int) zipContent.size())))) {
+                final ZipArchiveEntry inflatedEntry = zf.getEntry("inflated.txt");
+                final ResourceAlignmentExtraField inflatedAlignmentEx = (ResourceAlignmentExtraField) inflatedEntry
+                        .getExtraField(ResourceAlignmentExtraField.ID);
+                assertNotEquals(-1L, inflatedEntry.getCompressedSize());
+                assertNotEquals(-1L, inflatedEntry.getSize());
+                assertEquals(0L, inflatedEntry.getDataOffset() % 1024);
+                assertNotNull(inflatedAlignmentEx);
+                assertEquals(1024, inflatedAlignmentEx.getAlignment());
+                assertFalse(inflatedAlignmentEx.allowMethodChange());
+                try (InputStream stream = zf.getInputStream(inflatedEntry)) {
+                    Assert.assertEquals("Hello Deflated\n", new String(IOUtils.toByteArray(stream), UTF_8));
+                }
+                final ZipArchiveEntry storedEntry = zf.getEntry("stored.txt");
+                final ResourceAlignmentExtraField storedAlignmentEx = (ResourceAlignmentExtraField) storedEntry.getExtraField(ResourceAlignmentExtraField.ID);
+                assertNotEquals(-1L, storedEntry.getCompressedSize());
+                assertNotEquals(-1L, storedEntry.getSize());
+                assertEquals(0L, storedEntry.getDataOffset() % 1024);
+                assertNotNull(storedAlignmentEx);
+                assertEquals(1024, storedAlignmentEx.getAlignment());
+                assertFalse(storedAlignmentEx.allowMethodChange());
+                try (InputStream stream = zf.getInputStream(storedEntry)) {
+                    Assert.assertEquals("Hello Stored\n", new String(IOUtils.toByteArray(stream), UTF_8));
+                }
+
+                final ZipArchiveEntry storedEntry2 = zf.getEntry("stored2.txt");
+                final ResourceAlignmentExtraField stored2AlignmentEx = (ResourceAlignmentExtraField) storedEntry2.getExtraField(ResourceAlignmentExtraField.ID);
+                assertNotEquals(-1L, storedEntry2.getCompressedSize());
+                assertNotEquals(-1L, storedEntry2.getSize());
+                assertEquals(0L, storedEntry2.getDataOffset() % 1024);
+                assertNotNull(stored2AlignmentEx);
+                assertEquals(1024, stored2AlignmentEx.getAlignment());
+                assertFalse(stored2AlignmentEx.allowMethodChange());
+                try (InputStream stream = zf.getInputStream(storedEntry2)) {
+                    Assert.assertEquals("Hello overload-alignment Stored\n", new String(IOUtils.toByteArray(stream), UTF_8));
+                }
+
+                final ZipArchiveEntry storedEntry3 = zf.getEntry("stored3.txt");
+                final ResourceAlignmentExtraField stored3AlignmentEx = (ResourceAlignmentExtraField) storedEntry3.getExtraField(ResourceAlignmentExtraField.ID);
+                assertNotEquals(-1L, storedEntry3.getCompressedSize());
+                assertNotEquals(-1L, storedEntry3.getSize());
+                assertEquals(0L, storedEntry3.getDataOffset() % 1024);
+                assertNotNull(stored3AlignmentEx);
+                assertEquals(1024, stored3AlignmentEx.getAlignment());
+                assertFalse(stored3AlignmentEx.allowMethodChange());
+                try (InputStream stream = zf.getInputStream(storedEntry3)) {
+                    Assert.assertEquals("Hello copy-alignment Stored\n", new String(IOUtils.toByteArray(stream), UTF_8));
+                }
             }
         }
     }
@@ -582,8 +574,8 @@ public class ZipFileTest {
      */
     @Test
     public void testEntryAlignmentExceed() throws Exception {
-        final SeekableInMemoryByteChannel zipContent = new SeekableInMemoryByteChannel();
-        try (ZipArchiveOutputStream zipOutput = new ZipArchiveOutputStream(zipContent)) {
+        try (SeekableInMemoryByteChannel zipContent = new SeekableInMemoryByteChannel();
+             ZipArchiveOutputStream zipOutput = new ZipArchiveOutputStream(zipContent)) {
             final ZipArchiveEntry inflatedEntry = new ZipArchiveEntry("inflated.txt");
             inflatedEntry.setMethod(ZipEntry.STORED);
             assertThrows(IllegalArgumentException.class, () -> inflatedEntry.setAlignment(0x20000));
@@ -707,47 +699,52 @@ public class ZipFileTest {
     @Test
     public void extractFileLiesAcrossSplitZipSegmentsCreatedByZip() throws Exception {
         final File lastFile = getFile("COMPRESS-477/split_zip_created_by_zip/split_zip_created_by_zip.zip");
-        final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile);
-        zf = new ZipFile(channel);
-
-        // the compressed content of UnsupportedCompressionAlgorithmException.java lies between .z01 and .z02
-        ZipArchiveEntry zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/dump/UnsupportedCompressionAlgorithmException.java");
-        File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_1");
-        assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
-
-        // the compressed content of DeflateParameters.java lies between .z02 and .zip
-        zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateParameters.java");
-        fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_2");
-        assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+        try (final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile)) {
+            zf = new ZipFile(channel);
+
+            // the compressed content of UnsupportedCompressionAlgorithmException.java lies between .z01 and .z02
+            ZipArchiveEntry zipEntry = zf
+                    .getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/dump/UnsupportedCompressionAlgorithmException.java");
+            File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_1");
+            assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+
+            // the compressed content of DeflateParameters.java lies between .z02 and .zip
+            zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateParameters.java");
+            fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_2");
+            assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+        }
     }
 
     @Test
     public void extractFileLiesAcrossSplitZipSegmentsCreatedByZipOfZip64() throws Exception {
         final File lastFile = getFile("COMPRESS-477/split_zip_created_by_zip/split_zip_created_by_zip_zip64.zip");
-        final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile);
-        zf = new ZipFile(channel);
-
-        // the compressed content of UnsupportedCompressionAlgorithmException.java lies between .z01 and .z02
-        ZipArchiveEntry zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/dump/UnsupportedCompressionAlgorithmException.java");
-        File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_1");
-        assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
-
-        // the compressed content of DeflateParameters.java lies between .z02 and .zip
-        zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateParameters.java");
-        fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_2");
-        assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+        try (final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile)) {
+            zf = new ZipFile(channel);
+
+            // the compressed content of UnsupportedCompressionAlgorithmException.java lies between .z01 and .z02
+            ZipArchiveEntry zipEntry = zf
+                    .getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/dump/UnsupportedCompressionAlgorithmException.java");
+            File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_1");
+            assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+
+            // the compressed content of DeflateParameters.java lies between .z02 and .zip
+            zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateParameters.java");
+            fileToCompare = getFile("COMPRESS-477/split_zip_created_by_zip/file_to_compare_2");
+            assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+        }
     }
 
     @Test
     public void extractFileLiesAcrossSplitZipSegmentsCreatedByWinrar() throws Exception {
         final File lastFile = getFile("COMPRESS-477/split_zip_created_by_winrar/split_zip_created_by_winrar.zip");
-        final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile);
-        zf = new ZipFile(channel);
+        try (final SeekableByteChannel channel = ZipSplitReadOnlySeekableByteChannel.buildFromLastSplitSegment(lastFile)) {
+            zf = new ZipFile(channel);
 
-        // the compressed content of ZipArchiveInputStream.java lies between .z01 and .z02
-        final ZipArchiveEntry zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java");
-        final File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_winrar/file_to_compare_1");
-        assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+            // the compressed content of ZipArchiveInputStream.java lies between .z01 and .z02
+            final ZipArchiveEntry zipEntry = zf.getEntry("commons-compress/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java");
+            final File fileToCompare = getFile("COMPRESS-477/split_zip_created_by_winrar/file_to_compare_1");
+            assertFileEqualsToEntry(fileToCompare, zipEntry, zf);
+        }
     }
 
     @Test
@@ -772,9 +769,7 @@ public class ZipFileTest {
     @Test
     public void testSelfExtractingZipUsingUnzipsfx() throws IOException, InterruptedException {
         final File unzipsfx = new File("/usr/bin/unzipsfx");
-        if (!unzipsfx.exists()) {
-            return;
-        }
+        Assumptions.assumeTrue(unzipsfx.exists());
 
         final File testZip = File.createTempFile("commons-compress-selfExtractZipTest", ".zip");
         testZip.deleteOnExit();
@@ -783,30 +778,26 @@ public class ZipFileTest {
         final File extractedFile = new File(testZip.getParentFile(), testEntryName);
         extractedFile.deleteOnExit();
 
-        OutputStream outputStream = null;
-        InputStream inputStream = null;
         final byte[] testData = new byte[]{1, 2, 3, 4};
         final byte[] buffer = new byte[512];
         int bytesRead;
         try (InputStream unzipsfxInputStream = Files.newInputStream(unzipsfx.toPath())) {
-            outputStream = Files.newOutputStream(testZip.toPath());
-            final ZipArchiveOutputStream zo = new ZipArchiveOutputStream(outputStream);
-
-            while ((bytesRead = unzipsfxInputStream.read(buffer)) > 0) {
-                zo.writePreamble(buffer, 0, bytesRead);
+            try (OutputStream outputStream = Files.newOutputStream(testZip.toPath());
+                 ZipArchiveOutputStream zo = new ZipArchiveOutputStream(outputStream)) {
+
+                while ((bytesRead = unzipsfxInputStream.read(buffer)) > 0) {
+                    zo.writePreamble(buffer, 0, bytesRead);
+                }
+
+                final ZipArchiveEntry ze = new ZipArchiveEntry(testEntryName);
+                ze.setMethod(ZipEntry.STORED);
+                ze.setSize(4);
+                ze.setCrc(0xb63cfbcdL);
+                zo.putArchiveEntry(ze);
+                zo.write(testData);
+                zo.closeArchiveEntry();
             }
 
-            final ZipArchiveEntry ze = new ZipArchiveEntry(testEntryName);
-            ze.setMethod(ZipEntry.STORED);
-            ze.setSize(4);
-            ze.setCrc(0xb63cfbcdL);
-            zo.putArchiveEntry(ze);
-            zo.write(testData);
-            zo.closeArchiveEntry();
-            zo.close();
-            outputStream.close();
-            outputStream = null;
-
             final ProcessBuilder pbChmod = new ProcessBuilder("chmod", "+x", testZip.getPath());
             pbChmod.redirectErrorStream(true);
             final Process processChmod = pbChmod.start();
@@ -824,18 +815,12 @@ public class ZipFileTest {
                 fail("Can not find the extracted file");
             }
 
-            inputStream = Files.newInputStream(extractedFile.toPath());
-            bytesRead = IOUtils.readFully(inputStream, buffer);
-            assertEquals(testData.length, bytesRead);
-            assertArrayEquals(testData, Arrays.copyOfRange(buffer, 0, bytesRead));
-        } finally {
-            if (outputStream != null) {
-                outputStream.close();
+            try (InputStream inputStream = Files.newInputStream(extractedFile.toPath())) {
+                bytesRead = IOUtils.readFully(inputStream, buffer);
+                assertEquals(testData.length, bytesRead);
+                assertArrayEquals(testData, Arrays.copyOfRange(buffer, 0, bytesRead));
             }
-            if (inputStream != null) {
-                inputStream.close();
-            }
-
+        } finally {
             testZip.delete();
             extractedFile.delete();
             extractedFile.getParentFile().delete();
@@ -854,51 +839,51 @@ public class ZipFileTest {
         }
     }
 
-	private void assertAllReadMethods(final byte[] expected, final ZipFile zipFile, final ZipArchiveEntry entry) {
-		// simple IOUtil read
-		try (InputStream stream = zf.getInputStream(entry)) {
-			final byte[] full = IOUtils.toByteArray(stream);
-			assertArrayEquals(expected, full);
-		} catch (final IOException ex) {
-			throw new AssertionError(ex);
-		}
-
-		// big buffer at the beginning and then chunks by IOUtils read
-		try (InputStream stream = zf.getInputStream(entry)) {
-			byte[] full;
-			final byte[] bytes = new byte[0x40000];
-			final int read = stream.read(bytes);
-			if (read < 0) {
-				full = ByteUtils.EMPTY_BYTE_ARRAY;
-			} else {
-				full = readStreamRest(bytes, read, stream);
-			}
-			assertArrayEquals(expected, full);
-		} catch (final IOException ex) {
-			throw new AssertionError(ex);
-		}
-
-		// small chunk / single byte and big buffer then
-		try (InputStream stream = zf.getInputStream(entry)) {
-			byte[] full;
-			final int single = stream.read();
-			if (single < 0) {
-				full = ByteUtils.EMPTY_BYTE_ARRAY;
-			} else {
-				final byte[] big = new byte[0x40000];
-				big[0] = (byte) single;
-				final int read = stream.read(big, 1, big.length - 1);
-				if (read < 0) {
-					full = new byte[] { (byte) single };
-				} else {
-					full = readStreamRest(big, read + 1, stream);
-				}
-			}
-			assertArrayEquals(expected, full);
-		} catch (final IOException ex) {
-			throw new AssertionError(ex);
-		}
-	}
+    private void assertAllReadMethods(final byte[] expected, final ZipFile zipFile, final ZipArchiveEntry entry) {
+        // simple IOUtil read
+        try (InputStream stream = zf.getInputStream(entry)) {
+            final byte[] full = IOUtils.toByteArray(stream);
+            assertArrayEquals(expected, full);
+        } catch (final IOException ex) {
+            throw new AssertionError(ex);
+        }
+
+        // big buffer at the beginning and then chunks by IOUtils read
+        try (InputStream stream = zf.getInputStream(entry)) {
+            byte[] full;
+            final byte[] bytes = new byte[0x40000];
+            final int read = stream.read(bytes);
+            if (read < 0) {
+                full = ByteUtils.EMPTY_BYTE_ARRAY;
+            } else {
+                full = readStreamRest(bytes, read, stream);
+            }
+            assertArrayEquals(expected, full);
+        } catch (final IOException ex) {
+            throw new AssertionError(ex);
+        }
+
+        // small chunk / single byte and big buffer then
+        try (InputStream stream = zf.getInputStream(entry)) {
+            byte[] full;
+            final int single = stream.read();
+            if (single < 0) {
+                full = ByteUtils.EMPTY_BYTE_ARRAY;
+            } else {
+                final byte[] big = new byte[0x40000];
+                big[0] = (byte) single;
+                final int read = stream.read(big, 1, big.length - 1);
+                if (read < 0) {
+                    full = new byte[] { (byte) single };
+                } else {
+                    full = readStreamRest(big, read + 1, stream);
+                }
+            }
+            assertArrayEquals(expected, full);
+        } catch (final IOException ex) {
+            throw new AssertionError(ex);
+        }
+    }
 
     /**
      * Utility to append the rest of the stream to already read data.
@@ -951,17 +936,14 @@ public class ZipFileTest {
 
     private void assertFileEqualsToEntry(final File fileToCompare, final ZipArchiveEntry entry, final ZipFile zipFile) throws IOException {
         final byte[] buffer = new byte[10240];
-        final File tempFile = File.createTempFile("temp","txt");
-        final OutputStream outputStream = Files.newOutputStream(tempFile.toPath());
-        final InputStream inputStream = zipFile.getInputStream(entry);
-        int readLen;
-        while((readLen = inputStream.read(buffer)) > 0) {
-            outputStream.write(buffer, 0, readLen);
+        final File tempFile = File.createTempFile("temp", "txt");
+        try (final OutputStream outputStream = Files.newOutputStream(tempFile.toPath()); final InputStream inputStream = zipFile.getInputStream(entry)) {
+            int readLen;
+            while ((readLen = inputStream.read(buffer)) > 0) {
+                outputStream.write(buffer, 0, readLen);
+            }
         }
 
-        outputStream.close();
-        inputStream.close();
-
         assertFileEqualIgnoreEndOfLine(fileToCompare, tempFile);
     }