1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.compress.archivers.zip;
19
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.util.zip.Inflater;
23 import java.util.zip.InflaterInputStream;
24
25 import org.apache.commons.compress.utils.InputStreamStatistics;
26
27
28
29
30
31
32 class InflaterInputStreamWithStatistics extends InflaterInputStream implements InputStreamStatistics {
33
34 private long compressedCount;
35 private long uncompressedCount;
36
37 InflaterInputStreamWithStatistics(final InputStream in) {
38 super(in);
39 }
40
41 InflaterInputStreamWithStatistics(final InputStream in, final Inflater inf) {
42 super(in, inf);
43 }
44
45 InflaterInputStreamWithStatistics(final InputStream in, final Inflater inf, final int size) {
46 super(in, inf, size);
47 }
48
49 @Override
50 protected void fill() throws IOException {
51 super.fill();
52 compressedCount += inf.getRemaining();
53 }
54
55 @Override
56 public long getCompressedCount() {
57 return compressedCount;
58 }
59
60 @Override
61 public long getUncompressedCount() {
62 return uncompressedCount;
63 }
64
65 @Override
66 public int read() throws IOException {
67 final int b = super.read();
68 if (b > -1) {
69 uncompressedCount++;
70 }
71 return b;
72 }
73
74 @Override
75 public int read(final byte[] b, final int off, final int len) throws IOException {
76 final int bytes = super.read(b, off, len);
77 if (bytes > -1) {
78 uncompressedCount += bytes;
79 }
80 return bytes;
81 }
82 }