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(),""));
fos = new FileOutputStream(outFile);
byte[] buf = new byte[100000];
int len;
while ((len = gin.read(buf)) > 0) {
fos.write(buf,len);
}
fos.close();
if (deleteGzipfileOnSuccess) {
infile.delete();
}
return outFile;
} finally {
if (gin != null) {
gin.close();
}
if (fos != null) {
fos.close();
}
}
}