一尘不染

使用Java将文件追加到zip文件

java

我当前正在提取war文件的内容,然后将一些新文件添加到目录结构中,然后创建一个新的war文件。

所有这些都是通过Java以编程方式完成的-但我想知道,复制war文件然后追加文件是否会更有效-那么只要战争扩大,我就不必等待,再次被压缩。

但是,在文档或任何在线示例中,我似乎都找不到找到此方法的方法。

任何人都可以给一些提示或指示吗?

更新:

答案之一中提到的TrueZip似乎是一个非常好的java库,可以附加到zip文件中(尽管其他答案表明无法做到这一点)。

是否有人对TrueZip有经验或反馈,或者可以推荐其他类似的库?


阅读 1077

收藏
2020-03-06

共1个答案

一尘不染

在Java 7中,我们获得了Zip文件系统,该文件系统允许以zip(jar,war)格式添加和更改文件,而无需手动重新打包。

我们可以直接将文件写入zip文件中,如下例所示。

Map<String, String> env = new HashMap<>(); 
env.put("create", "true");
Path path = Paths.get("test.zip");
URI uri = URI.create("jar:" + path.toUri());
try (FileSystem fs = FileSystems.newFileSystem(uri, env))
{
    Path nf = fs.getPath("new.txt");
    try (Writer writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, StandardOpenOption.CREATE)) {
        writer.write("hello");
    }
}
2020-03-06