我正在研究Minecraft Mod Installer,并考虑将引擎从C#移到Java,如果可以将一些文件从一个zip复制到另一个zip而不将它们提取到临时文件夹,如果可能的话我会这样做吗?
在旧引擎中,它将文件解压缩到临时文件夹,然后将它们添加到Minecraft.jar
答案 0 :(得分:2)
jre中的原生zip支持可以做到这一点。试试这个:
void substitute(ZipInputStream zis, ZipOutputStream zos) {
for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) {
if (ze.getName() is what you want to copy) {
zos.putNextEntry(ze)
Array[Byte] buffer = new Array[Byte](1024)
for (int read = zis.read(buffer); read != -1; read = zis.read(buffer)) {
zos.write(buffer, 0, read)
}
zos.closeEntry
}
}
zos.close()
zis.close()
}
注意:zip文件中的数据会被解压缩并再次压缩。