Calculating Compressed Filesize from GZIPOutputStream
-
01-07-2021 - |
Вопрос
I am compressing File and writing it into outputstream, How to get the compressed file size to put in response header
os = response.getOutputStream();
gzos = new GZIPOutputStream(os);
fin = new FileInputStream(file);
in = new BufferedInputStream(fin);
byte[] buffer = new byte[1024];
int i;
while ((i = in.read(buffer)) >= 0) {
gzos.write(buffer, 0, i);
}
gzos.flush();
Решение
you don't. Reason:
response will be committed once response buffer is full, that is to say, if you are gzipping a 20MB large file, the header was already sent to client before gzip completes, and you can not modify the committed header when gzip finishes.
Другие советы
You should Look at fin.Position
You don't. Reason: you don't have to. The servlet container takes care of it for you.
Не связан с StackOverflow