这个问题在这里已经有了答案:
如何在java中将.zip压缩为.gz(1个答案)
去年关门了。
我有一个zip文件,我想把它转换成gzip并写回文件系统。我该怎么做?
我已经有了将文件压缩到gzip的代码:
private static void compressGzipFile(String file, String gzipFile) {
try {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(gzipFile);
GZIPOutputStream gzipOS = new GZIPOutputStream(fos);
byte[] buffer = new byte[1024];
int len;
while ((len=fis.read(buffer)) != -1) {
gzipOS.write(buffer, 0, len);
}
// Close resources
gzipOS.close();
fos.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
现在我需要代码将zip文件转换为gzip文件。
1条答案
按热度按时间u3r8eeie1#
为什么不直接用管子
ZipInputStream
直接进入GZIPOutputStream
?这个解决方案利用了Java9非常有用的优点
InputStream#transferTo(OutputStream)
. 如果您还没有使用Java9,则需要手动将字节从一个流复制到另一个流,或者使用ApacheCommonsIOUtilsIOUtils.copy(InputStream, OutputStream)
.