Java ZipOutputStream 仅压缩某些文件/压缩过滤器

发布于 2024-12-07 01:48:27 字数 502 浏览 5 评论 0原文

这确实是一个由两部分组成的问题。

前言:我使用WinRAR来压缩文件。它使您可以选择仅压缩某些文件。我可以按文件扩展名进行过滤,这样 JPEG 文件就不会被压缩,而其他文件则会被压缩。

  1. 这可以用一般的 ZIP 文件来完成吗?还是只是 WinRAR/RAR 格式的功能?

  2. 如果可以使用 ZIP 格式,有没有办法使用 Java 的 ZipOutputStream 类?或者,也许使用其他一些 ZIP Java 实现?

为了澄清,我想告诉我的 ZipOutputStream 仅压缩具有特定扩展名的文件。这可能吗?

谢谢

This is a two part question, really.

Preface: I use WinRAR to compress files. It gives you the option of only compressing certain files. I can filter by file extension so that, say, JPEG files are not compressed, while other files are.

  1. Can this be done with ZIP files in general, or is it only a WinRAR/RAR format capability?

  2. If it is possible do to with the ZIP format, is there a way I can do that using Java's ZipOutputStream class? Or, perhaps using some other ZIP Java implementation?

To clarify, I would like to tell my ZipOutputStream to only compress files with a particular extension. Is this possible?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伴我老 2024-12-14 01:48:27

是的,您可以使用 ZipOutputStream 来实现。在每个文件之前(或者当您想要更改它时)调用 setLevel 带有来自 Deflater,在您的情况下Deflater.NO_COMPRESSION。这方面的文档应该更清楚。

您可以轻松创建 ZipOutputStream 的子类来重写 putNextEntry 来处理此逻辑。

Yes, you can do it with ZipOutputStream. Before each file (or when you want to change it) call setLevel with a constant from Deflater, in your case Deflater.NO_COMPRESSION. The documentation on this should be clearer.

You could easily make a subclass of ZipOutputStream that overrides putNextEntry to handle this logic.

菩提树下叶撕阳。 2024-12-14 01:48:27

ZipOutputStream 有方法控制后续条目是否 要放气,并且使用哪个压缩级别

也可以指定在 ZipEntry 级别(优先)。

ZipOutputStream has methods to control if subsequent entries are to be deflated, and with which compression level.

This can also be specified on the ZipEntry level (where it takes precedence).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文