java在不膨胀的情况下重命名zip/gz文件的内容



对于.zip文件,我们在Java中有ZipInputStream和ZipOutputStream,用于读取和写入zip文件。

zin = new ZipInputStream(new FileInputStream("xx.zip"));
ZipEntry entry =  zin.getNextEntry();
while (entry != null) {
String name = entry.getName();
File file = new File(name);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] bytesIn = new byte[1024];
while ((int read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
// code for renaming file ... here ...
// . . . 
entry = zin.getNextEntry();
}
zin.close();

同样,使用GZIPInputStream对.gz进行膨胀也是如此。由于.gz文件只有一个内容,因此不需要zip条目。我们可以使用.gz文件的名称直接对其进行扩展(不带后缀(。我的问题是:

我可以在不夸大内容的情况下重命名.zip的内容(以及.gz(吗?在.gz文件中,由于.gz文件和内容的名称相同,如果重命名.gz文件,也会重命名其内容。

对于.zip文件,我可以简单地重命名ZipEntry而不完全膨胀吗?

请提出建议。

Zip4j具有重命名zip中文件的功能。不过,它只支持zip文件,而不支持gzip。

最新更新