java - 使用 Java 在内存中捆绑 zip 文件
问题描述
我需要捆绑几个 zip 文件(罐子)。我尝试了以下解决方案:
通过遍历输入流的每个条目并将其复制到输出流(据我了解,这主要是在硬盘驱动器上发生的 IO 密集型操作),从 ZipInputStream 倒入 ZipOutputStream,就像在这个堆栈溢出问题中一样
在内存文件系统中创建,将两个 zip 解压缩到同一个目录,然后再次压缩。我正在使用 jimfs - https://github.com/google/jimfs
选项 2 对我来说少了大约 5 倍。
我正在寻找一个开箱即用的解决方案,用于内存 fs 中的 zip,但没有找到。另外 - jimfs 不能与 Java 7 nio zipfs 结合使用(没有 API 可以使用带有下划线 jimfs 的 zipfs)。
我的解决方案似乎不干净/使用最佳实践,所以我正在寻找建议/开箱即用的解决方案/库,这将帮助我在不开发和维护库的情况下实现内存性能
解决方案
Apperatnly 有一种方法将 ZipFS 与 JIMFS 捆绑在一起 - 即将文件(由 JIFS 存储在内存中)视为 Zip 文件系统。
FileSystems.newFileSystem(
URI.create("jar:" + pathToZipFile.toUri()),
Collections.singletonMap("create", "true"));
其中 pathToZipFile 是存储在 JIMFS 中的 jar 文件
推荐阅读
- asynchronous - 如何在 Flutter 的异步任务中启动异步任务?
- java - 选择适当的 TypeAdapter 来更改 json 中的字段名称
- c# - mysql 工作台 sqlJoins
- cucumber - 未定义 AbstractTestNGCucumberTests 类型的方法场景()
- f# - 在 Argu 中,出现看似可选参数的缺少参数错误
- git - 如何在声明性 jenkins 电子邮件通知发布操作中添加 git 提交信息详细信息?
- java - Channel ManagedChannelImpl 未正确关闭
- python - 如何使用 VS Code for Miniconda 修复 Code Runner 插件?
- dart - 飞镖舍入错误
- node.js - 无法发布/显示