From 01c21c7aa07173ac6eb98e80dbee05e452adfa61 Mon Sep 17 00:00:00 2001 From: Timi Date: Tue, 7 Apr 2026 16:44:18 +0800 Subject: [PATCH] v0.0.4 --- .../java/com/imyeyu/compress/GZipCompressor.java | 14 +++++++++----- src/test/java/test/GzipTest.java | 5 +++-- src/test/java/test/TarTest.java | 5 +++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/imyeyu/compress/GZipCompressor.java b/src/main/java/com/imyeyu/compress/GZipCompressor.java index 50d6e77..a58f895 100644 --- a/src/main/java/com/imyeyu/compress/GZipCompressor.java +++ b/src/main/java/com/imyeyu/compress/GZipCompressor.java @@ -46,10 +46,10 @@ public class GZipCompressor extends Compressor { List files = IO.listFile(fromFile); String basePath = files.getFirst().getParentFile().getAbsolutePath(); initByteProgress(IO.calcSize(fromFile)); - try ( - GzipCompressorOutputStream gzipOutputStream = new GzipCompressorOutputStream(new BufferedOutputStream(nonClosing(toStream))); - TarArchiveOutputStream tarOutputStream = new TarArchiveOutputStream(gzipOutputStream) - ) { + GzipCompressorOutputStream gzipOutputStream = new GzipCompressorOutputStream(new BufferedOutputStream(nonClosing(toStream))); + TarArchiveOutputStream tarOutputStream = null; + try { + tarOutputStream = new TarArchiveOutputStream(gzipOutputStream); for (File sourceFile : files) { String name = sourceFile.getAbsolutePath().substring(basePath.length() + 1); TarArchiveEntry tarEntry = new TarArchiveEntry(sourceFile, normalizeEntryName(name)); @@ -61,9 +61,13 @@ public class GZipCompressor extends Compressor { handleFile(sourceFile); } tarOutputStream.finish(); - gzipOutputStream.finish(); finishProgress(); } finally { + if (tarOutputStream != null) { + tarOutputStream.close(); + } else { + gzipOutputStream.close(); + } resetProgress(); } } diff --git a/src/test/java/test/GzipTest.java b/src/test/java/test/GzipTest.java index 385ed52..4ed6056 100644 --- a/src/test/java/test/GzipTest.java +++ b/src/test/java/test/GzipTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.OutputStream; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -52,8 +53,8 @@ public class GzipTest { @Test public void testCompressToStream() throws Exception { - try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - CompressType.GZIP.ofCompress("testSrc").toStream(outputStream); + try (OutputStream os = IO.getOutputStream(IO.file("testOut/test.tar.gz"))) { + CompressType.GZIP.ofCompress("testSrc").toStream(os); } } diff --git a/src/test/java/test/TarTest.java b/src/test/java/test/TarTest.java index e2136b2..b4384ff 100644 --- a/src/test/java/test/TarTest.java +++ b/src/test/java/test/TarTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.OutputStream; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -52,8 +53,8 @@ public class TarTest { @Test public void testCompressToStream() throws Exception { - try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - CompressType.TAR.ofCompress("testSrc").toStream(outputStream); + try (OutputStream os = IO.getOutputStream(IO.file("testOut/test.tar"))) { + CompressType.TAR.ofCompress("testSrc").toStream(os); } }