diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java index 5372b7381..99d5e38b1 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java @@ -177,6 +177,8 @@ public class StreamArchiver implements Archiver { for (File childFile : files) { addInternal(childFile, entryName, filter); } + } else { + out.closeArchiveEntry(); } } else { if (file.isFile()) { diff --git a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java index 8ba8d499a..3175efc3e 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java @@ -72,4 +72,36 @@ public class ArchiverTest { }) .finish().close(); } + + /** + * Add: D:\disk-all + * Add: D:\disk-all\els-app + * Add: D:\disk-all\els-app\db-backup + * Add: D:\disk-all\els-app\新建 文本文档.txt + * Add: D:\disk-all\新建 文本文档.txt + * Add: D:\disk-all\新建文件夹 + */ + @Test + @Ignore + public void emptyTest(){ + final File file = FileUtil.file("d:/disk-all.tgz"); + CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, "tgz", file) + .add(FileUtil.file("D:\\disk-all"), (f)->{ + Console.log("Add: {}", f.getPath()); + return true; + }) + .finish().close(); + } + + @Test + @Ignore + public void emptyZTest(){ + final File file = FileUtil.file("d:/disk-all.7z"); + CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, "7z", file) + .add(FileUtil.file("D:\\disk-all"), (f)->{ + Console.log("Add: {}", f.getPath()); + return true; + }) + .finish().close(); + } }