Calculating Compressed Filesize from GZIPOutputStream
-
01-07-2021 - |
Question
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();
Solution
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.
OTHER TIPS
You should Look at fin.Position
You don't. Reason: you don't have to. The servlet container takes care of it for you.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow