我需要捆绑几个zip文件(jar)。
我尝试了以下解决方案:
通过遍历输入流的每个条目并将其复制到输出流,将其从ZipInputStream倒入ZipOutputStream(据我了解,这是硬盘驱动器上发生的大多数IO密集型操作)using the code as in this stack-overflow question
在内存文件系统中创建,将两个zip解压缩到相同的目录,然后再次压缩。我正在使用jimfs-https://github.com/google/jimfs
选项2所花的时间比我少5倍。
我当时正在寻找一种开箱即用的解决方案来查找内存fs中的zip,但没有找到任何解决方案。另外-jimfs不能与Java 7 nio zipfs结合使用(没有API将zipfs与下划线的jimfs一起使用)。
我的解决方案似乎并不干净/使用最佳实践,因此我正在寻找建议/现成的解决方案/库,这将有助于我在不开发和维护库的情况下实现内存性能
最佳答案
显然,有一种方法可以将ZipFS与JIMFS捆绑在一起-也就是说,将文件(由JIFS存储在内存中)视为Zip文件系统。
FileSystems.newFileSystem(
URI.create("jar:" + pathToZipFile.toUri()),
Collections.singletonMap("create", "true"));
其中pathToZipFile是存储在JIMFS中的jar文件