У меня есть проблемы со временем он требует для .gz файлов, чтобы получить распакованы, используя следующий код:Оптимизация процесса Ungunzipping в Java?
import java.io.*;
import java.util.zip.*;
public class UnGunzipClass{
public static boolean ungunzip(String compressedFile, String decompressedFile){
try{
// in
FileInputStream fileIn = new FileInputStream(compressedFile);
GZIPInputStream gZipIn = new GZIPInputStream(fileIn);
BufferedInputStream in = new BufferedInputStream(gZipIn);
// out
FileOutputStream fileOut = new FileOutputStream(decompressedFile);
BufferedOutputStream out = new BufferedOutputStream(fileOut);
int n = 0;
int len = 1024*1024*1024;
byte[] buffer = new byte[len];
while((n = in.read(buffer,0,len)) > 0){
out.write(buffer,0,n);
}
gZipIn.close();
fileOut.close();
return true;
} catch (IOException e){
e.printStackTrace();
return false;
}
}
}
Примечание: Файлы до 100 МБ, но она все еще принимает меня десятки минут, чтобы бежать, поэтому я пытаюсь получить что-то быстрее. Скорость хорошая :)
вам действительно нужен буфер памяти 1 Гб (не то, что это имеет значение По скорости) делать? – Thilo
'n = in.read (buffer, 0, n)'. Это последнее 'n' кажется неправильным. должен быть 'buffer.length'. – Thilo
Это даже работает? Если вы начинаете с 'n = 0', согласно документам, он не должен читать байты и выходить из цикла. – Thilo