gpt4 book ai didi

java - 替换 Zip 文件而不用 Java 解压缩

转载 作者:行者123 更新时间:2023-11-29 08:44:03 24 4
gpt4 key购买 nike

我有一个 zip 文件,我想用另一个文件替换其中的一个文件。因此不需要删除 zip 条目,只需将 zip 条目的文件替换为另一个文件即可。

这是我试过的。

public void replaceConfigurationFile(ZipFile zipFile, ZipOutputStream zos, String pathToNewFile, String configFileToReplaced) 
throws IOException {
String zipEntryName;
for(Enumeration<?> e = zipFile.entries(); e.hasMoreElements(); ) {

ZipEntry entryIn = (ZipEntry) e.nextElement();
zipEntryName = entryIn.getName();
if(zipEntryName.endsWith(configFileToReplaced)) {

FileInputStream fis = new FileInputStream(pathToNewFile);
ZipEntry zipEntry = new ZipEntry(zipEntryName);

zos.putNextEntry(zipEntry);

byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}

zos.closeEntry();
fis.close();
} else {
zos.putNextEntry(entryIn);
InputStream is = zipFile.getInputStream(entryIn);
byte [] buf = new byte[1024];
int len;
while((len = (is.read(buf))) > 0) {
zos.write(buf, 0, len);
}
zos.closeEntry();
}


} // enf of for
}

我有一个名为 zip 的文件条目:

WEB-INF/classes/config/app-dev.yml

我在d盘位置有一个文件

 D:/app-dev.yml

我可以通过替换我要替换的文件将文件复制到不同的 zip 文件中。但这真的不需要(创建不同的文件)。那么我应该怎么做才能用我的自定义文件替换该文件。

我在 Stackoverflow 中搜索了不同的帖子,但无法找到我需要的内容。我读到不能删除 zip 条目,但如何替换它呢?请帮忙

最佳答案

您的问题是新文件可能比旧文件大或小!您需要完全按照您所做的来允许更改。压缩后的新文件与前一个文件大小完全的概率几乎为零。

关于java - 替换 Zip 文件而不用 Java 解压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763911/

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