a) Zip 是一种存档格式,而 gzip 不是。因此,除非(例如)您的 gz 文件是压缩的 tar 文件,否则条目迭代器没有多大意义。你想要的可能是:
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
b)您只想解压缩文件吗?如果不是,您可以使用 GZIPInputStream 并直接读取文件,即无需中间解压缩。
但是没问题。假设您真的只想解压缩文件。如果是这样,你可能会使用这个:
public static File unGzip(File infile, boolean deleteGzipfileOnSuccess) throws IOException {
GZIPInputStream gin = new GZIPInputStream(new FileInputStream(infile));
FileOutputStream fos = null;
try {
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
fos = new FileOutputStream(outFile);
byte[] buf = new byte[100000];
int len;
while ((len = gin.read(buf)) > 0) {
fos.write(buf, 0, len);
}
fos.close();
if (deleteGzipfileOnSuccess) {
infile.delete();
}
return outFile;
} finally {
if (gin != null) {
gin.close();
}
if (fos != null) {
fos.close();
}
}
}