我有一个 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 条目,但是替换它呢?请帮忙