gpt4 book ai didi

java - 将文件添加到现有的 Zip 存档中

转载 作者:行者123 更新时间:2023-11-29 09:02:56 26 4
gpt4 key购买 nike

所以我遵循了这里的代码块:http://commons.apache.org/proper/commons-compress/examples.html ,据说只需制作一个 ZipArchiveEntry 然后插入数据。正如您在下面的代码中看到的那样。

    public void insertFile(File apkFile, File insert, String method)
throws AndrolibException {
ZipArchiveOutputStream out = null;
ZipArchiveEntry entry;

try {
byte[] data = Files.toByteArray(insert);
out = new ZipArchiveOutputStream(new FileOutputStream(apkFile, true));
out.setMethod(Integer.parseInt(method));
CRC32 crc = new CRC32();
crc.update(data);
entry = new ZipArchiveEntry(insert.getName());
entry.setSize(data.length);
entry.setTime(insert.lastModified());
entry.setCrc(crc.getValue());
out.putArchiveEntry(entry);
out.write(data);
out.closeArchiveEntry();
out.close();
} catch (FileNotFoundException ex) {
throw new AndrolibException(ex);
} catch (IOException ex) {
throw new AndrolibException(ex);
}
}

基本上,它传递了将采用“插入”文件的文件 (apkFile),另一个参数指示该文件的压缩方法。运行此代码块会产生 0 个错误,但 ZIP 文件中只有那个"new"文件。它删除所有以前的文件,然后插入新文件。

在 commons-compresss 之前,我必须将整个 Zip 复制到一个临时文件,进行更改,然后再将最终的 Zip 文件复制回来。不过我认为这个库可以解决这个问题?

最佳答案

总是希望在完成流后close()流(即out.close()),最好是在最终阻止。

关于java - 将文件添加到现有的 Zip 存档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com