Вы значительно упростите себе жизнь, используя блоки ресурсов , чтобы ваши файлы были закрыты правильно. Например:
private static String unzip(String gzipFile, String location){
try (
FileInputStream in = new FileInputStream(gzipFile);
GZIPInputStream gzip = new GZIPInputStream(in);
FileOutputStream out = new FileOutputStream(location))
{
byte[] b = new byte[4096];
int len;
while((len = gzip.read(b)) >= 0){
out.write(b, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Вы также должны убедиться, что у вас есть действующий файл .zip (конечно!) И что имена файлов ввода и вывода разные.
И что происходит с "буфером"? Полагаю (как и GPI) вы, вероятно, имели в виду «b»?