gpt4 book ai didi

java - Zip4j 无法删除或覆盖文件内的文件

转载 作者:行者123 更新时间:2023-12-02 09:02:37 25 4
gpt4 key购买 nike

我正在尝试使用 zip4j 编辑 odt 文件的内容(我尝试使用 java ZipEntries 但我什至无法从文件本身中删除条目,这就是我选择使用库的原因)。我可以确认我试图覆盖的文件退出了,我什至可以从中读取并告诉它何时创建,以便该部分工作。现在,当我尝试编辑 odt 内容(删除或覆盖)时,Zip4j 会抛出 ZipException,其中显示:无法重命名修改后的 zip 文件。我做错了什么?

 try
{
File temp = new File(f.getParent()+"/tmp/content.xml");
new File(temp.getParent()).mkdirs();
FileUtils.write(temp, "", encoding);
net.lingala.zip4j.ZipFile zf = new net.lingala.zip4j.ZipFile(f.getPath());
ZipParameters p = new ZipParameters();
p.setEncryptionMethod(EncryptionMethod.NONE);
p.setOverrideExistingFilesInZip(true);
p.setFileNameInZip("content.xml");
p.setCompressionMethod(CompressionMethod.DEFLATE);
zf.addFile(temp, p);
}
catch (Exception e)
{
e.printStackTrace();
}

最佳答案

Path & Files 支持 zip 文件系统及其 jar:file: 协议(protocol)。路径维护其文件系统,因此可以使用所有操作。

    Path osPath = Paths.get("C:/ ... .odt");
URI uri = URI.create("jar:" + osPath.toUri());

Map<String, String> env = new HashMap<>();
env.put("create", "true");
try (FileSystem zipFS = FileSystems.newFileSystem(uri, env)) {
Files.copy(zipFS.getPath("/media/image1.png"), osPath.resolveSibling("image1.png"),
StandardCopyOption.REPLACE_EXISTING);
Files.move(zipFS.getPath("/media/image2a.png"), zipFS.getPath("/media/image2.png"));
}

关于java - Zip4j 无法删除或覆盖文件内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60059868/

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