我需要捆绑几个zip文件(jar)。 我尝试过以下解决方案:
通过遍历输入流的每个条目并将其复制到输出流(从我的理解,这主要是硬盘驱动器上发生的IO密集型操作),从ZipInputStream倒入ZipOutputStream using the code as in this stack-overflow question
在内存文件系统中创建,将两个拉链提取到同一目录,然后再次压缩。我使用的是jimfs - https://github.com/google/jimfs
选项2对我来说减少了约5倍。
我正在寻找一个开箱即用的内存fs拉链解决方案,但没有找到。此外 - jimfs无法与Java 7 nio zipfs结合使用(没有使用带有下划线jimfs的zipfs的API)。
我的解决方案看起来并不干净/使用最佳实践,所以我正在寻找建议/开箱即用的解决方案/库,这将帮助我实现内存性能而无需开发&维护图书馆
答案 0 :(得分:2)
有一种方法可以将ZipFS与JIMFS捆绑在一起-也就是说,将文件(由JIFS存储在内存中)视为Zip文件系统。
FileSystems.newFileSystem(
URI.create("jar:" + pathToZipFile.toUri()),
Collections.singletonMap("create", "true"));
其中pathToZipFile是存储在JIMFS中的jar文件
答案 1 :(得分:0)
这个怎么样: