Java : GZIPInputStream (ZIP) with Examples
GZIPInputStream (Java SE 19 & JDK 19) API Examples.
You will find code examples on most GZIPInputStream methods.
Summary
// --------
// Compression
final var out = new ByteArrayOutputStream();
try (final var gos = new GZIPOutputStream(out)) {
gos.write("aaaaa".getBytes());
gos.write("ZZZZZ".getBytes());
}
final var compressed = out.toByteArray();
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 75, 76, 4,
// -126, 40, 16, 0, 0, -86, 55, 77, 24, 10, 0, 0, 0]
System.out.println(Arrays.toString(compressed));
// --------
// Decompression
try (final var gis = new GZIPInputStream(new ByteArrayInputStream(compressed))) {
final var uncompressed = gis.readAllBytes();
// [97, 97, 97, 97, 97, 90, 90, 90, 90, 90]
System.out.println(Arrays.toString(uncompressed));
// aaaaaZZZZZ
System.out.println(new String(uncompressed));
}
Helper method for code examples
Code examples on this page use the helper method below.
// Compress a string.
public byte[] deflate(String str) throws IOException {
final var out = new ByteArrayOutputStream();
try (final var gos = new GZIPOutputStream(out)) {
gos.write(str.getBytes());
}
return out.toByteArray();
}
Fields
protected CRC32 crc
protected. I think it's rare to create a subclass of this class. Therefore, the code example is omitted.
protected boolean eos
protected. I think it's rare to create a subclass of this class. Therefore, the code example is omitted.
static final int GZIP_MAGIC
System.out.printf("%#x", GZIPInputStream.GZIP_MAGIC); // 0x8b1f
Fields declared in InflaterInputStream
Fields declared in FilterInputStream
Constructors
GZIPInputStream (InputStream in)
final var bytes = deflate("aaaaa");
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 75, 76, 4, 2,
// 0, -71, -109, -84, -18, 5, 0, 0, 0]
System.out.println(Arrays.toString(bytes));
try (final var gis = new GZIPInputStream(new ByteArrayInputStream(bytes))) {
final var uncompressed = gis.readAllBytes();
// [97, 97, 97, 97, 97]
System.out.println(Arrays.toString(uncompressed));
// aaaaa
System.out.println(new String(uncompressed));
}
GZIPInputStream (InputStream in, int size)
Please see GZIPInputStream(InputStream in) for in parameter.
class MyInputStream extends GZIPInputStream {
public MyInputStream(InputStream in) throws IOException {
super(in);
}
public MyInputStream(InputStream in, int size) throws IOException {
super(in, size);
}
int getSize() {
return buf.length;
}
}
final var bytes = deflate("");
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
System.out.println(Arrays.toString(bytes));
try (final var is = new MyInputStream(new ByteArrayInputStream(bytes))) {
System.out.println(is.getSize()); // 512
}
try (final var is = new MyInputStream(new ByteArrayInputStream(bytes), 1024)) {
System.out.println(is.getSize()); // 1024
}
Methods
void close ()
final var file = Path.of("R:", "java-work", "aaa.gz");
System.out.println(file); // R:\java-work\aaa.gz
final var bytes = deflate("aaaaa");
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 75, 76, 4, 2,
// 0, -71, -109, -84, -18, 5, 0, 0, 0]
System.out.println(Arrays.toString(bytes));
Files.write(file, bytes);
try (final var gis = new GZIPInputStream(Files.newInputStream(file))) {
final var uncompressed = gis.readAllBytes();
// [97, 97, 97, 97, 97]
System.out.println(Arrays.toString(uncompressed));
// aaaaa
System.out.println(new String(uncompressed));
}
An example without try-with-resources.
final var file = Path.of("R:", "java-work", "aaa.gz");
System.out.println(file); // R:\java-work\aaa.gz
final var bytes = deflate("aaaaa");
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 75, 76, 4, 2,
// 0, -71, -109, -84, -18, 5, 0, 0, 0]
System.out.println(Arrays.toString(bytes));
Files.write(file, bytes);
final var gis = new GZIPInputStream(Files.newInputStream(file));
try {
final var uncompressed = gis.readAllBytes();
// [97, 97, 97, 97, 97]
System.out.println(Arrays.toString(uncompressed));
// aaaaa
System.out.println(new String(uncompressed));
} finally {
gis.close();
}
int read (byte[] buf, int off, int len)
final var str = "abcdef";
System.out.println(Arrays.toString(str.getBytes())); // [97, 98, 99, 100, 101, 102]
final var bytes = deflate(str);
// [31, -117, 8, 0, 0, 0, 0, 0, 0, -1, 75, 76, 74, 78,
// 73, 77, 3, 0, -17, 57, -114, 75, 6, 0, 0, 0]
System.out.println(Arrays.toString(bytes));
try (final var gis = new GZIPInputStream(new ByteArrayInputStream(bytes))) {
final var b1 = new byte[5];
System.out.println(gis.read(b1, 0, 3)); // 3
System.out.println(Arrays.toString(b1)); // [97, 98, 99, 0, 0]
final var b2 = new byte[5];
System.out.println(gis.read(b2, 1, 2)); // 2
System.out.println(Arrays.toString(b2)); // [0, 100, 101, 0, 0]
final var b3 = new byte[5];
System.out.println(gis.read(b3, 0, 5)); // 1
System.out.println(Arrays.toString(b3)); // [102, 0, 0, 0, 0]
}
Methods declared in InflaterInputStream
available, fill, mark, markSupported, read, reset, skip
Please see the link below.
Methods declared in FilterInputStream
Methods declared in InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Please see the link below.