а) Zip - это формат архива, а gzip - нет. Поэтому входной итератор не имеет большого смысла, если (например) ваши gz-файлы не являются сжатыми tar-файлами. Что вы, вероятно, хотите:
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
б) Вы хотите только распаковать файлы? Если нет, то вы можете использовать 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();
}
}
}