Package org.eclipse.mat.hprof

# Class ChunkedGZIPRandomAccessFile

java.lang.Object
java.io.RandomAccessFile
org.eclipse.mat.hprof.ChunkedGZIPRandomAccessFile

All Implemented Interfaces:
  `Closeable`, `DataInput`, `DataOutput`, `AutoCloseable`

public class ChunkedGZIPRandomAccessFile extends RandomAccessFile
This class can be used to get random access to chunked gzipped hprof files like the openjdk can create them. As described in https://tools.ietf.org/html/rfc1952, a gzip file consists of a number of "members". The openjdk gzipped dumps have a maximum size of data compressed in each "member". This makes it possible to start decompression at each start of a member. In case of the openjdk dumps the maximum size of uncompressed data in a "member" is stored in a comment in the first member. This is used to detect those files (without having to uncompress the whole file).

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`ChunkedGZIPRandomAccessFile.ChunkedGZIPOutputStream`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
`static void`
`compressFileChunked(File toCompress, File compressed)`
Compressed a file to a chunked gzipped file.
`static void`
`compressFileChunked2(File toCompress, File compressed)`
Compressed a file to a chunked gzipped file.
`static void`
`compressFileUnchunked(File toCompress, File compressed)`
Compressed a file to an unchunked gzipped file, but with more header fields compared to `GZIPOutputStream`.
`static void`
`forget(File file)`
Forget all cached version of the file.
`static ChunkedGZIPRandomAccessFile`
`get(RandomAccessFile raf, File file, String prefix)`
Returns the random access file for the given file or `null` if not supported for the file.
`long`
`getFilePointer()`
`long`
`getLastPhysicalReadPosition()`
Returns an estimation of the last physical position we read from.
`static boolean`
`isChunkedGZIPFile(RandomAccessFile raf)`
Checks if the given file is a chunked gzipped file.
`long`
`length()`
Unknown length is Long.MAX_VALUE
`int`
`read()`
`int`
`read(byte[] buf)`
`int`
`read(byte[] buf, int off, int len)`
`int`
`read(long offset, byte[] b, int off, int len)`
Reads bytes from the gzip file.
`void`
`seek(long pos)`

### Methods inherited from class java.io.RandomAccessFile

`getChannel, getFD, readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF, setLength, skipBytes, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### seek

public void seek(long pos) throws IOException

Overrides:
  `seek` in class `RandomAccessFile`
Throws:
  `IOException`

### getFilePointer

public long getFilePointer()

Overrides:
  `getFilePointer` in class `RandomAccessFile`

### length

public long length()
Unknown length is Long.MAX_VALUE

Overrides:
  `length` in class `RandomAccessFile`

### read

public int read() throws IOException

Overrides:
  `read` in class `RandomAccessFile`
Throws:
  `IOException`

### read

public int read(byte[] buf) throws IOException

Overrides:
  `read` in class `RandomAccessFile`
Throws:
  `IOException`

### read

public int read(byte[] buf, int off, int len) throws IOException

Overrides:
  `read` in class `RandomAccessFile`
Throws:
  `IOException`

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `RandomAccessFile`
Throws:
  `IOException`

### getLastPhysicalReadPosition

public long getLastPhysicalReadPosition()
Returns an estimation of the last physical position we read from.

Returns:
  The last physical position.

### read

public int read(long offset, byte[] b, int off, int len) throws IOException
Reads bytes from the gzip file.

Parameters:
  `offset` - The offset from which to start the read.
  `b` - The array to read into.
  `off` - The offset in the array to use.
  `len` - The number of bytes to read at most.
Returns:
  The number of bytes read or -1 if we are at the end of the file.
Throws:
  `IOException` - On error.

### isChunkedGZIPFile

public static boolean isChunkedGZIPFile(RandomAccessFile raf) throws IOException
Checks if the given file is a chunked gzipped file.

Parameters:
  `raf` - The file to check.
Returns:
  `true` if the file is a chunked gzip file.
Throws:
  `IOException` - On error.

### get

public static ChunkedGZIPRandomAccessFile get(RandomAccessFile raf, File file, String prefix) throws IOException
Returns the random access file for the given file or `null` if not supported for the file.

Parameters:
  `raf` - The random access file.
  `file` - The file name.
  `prefix` - The prefix of the snapshot.
Returns:
  The random access file or `null`.
Throws:
  `IOException` - problem reading the file

### forget

public static void forget(File file)
Forget all cached version of the file.

Parameters:
  `file` - The file to forget.

### compressFileChunked

public static void compressFileChunked(File toCompress, File compressed) throws IOException
Compressed a file to a chunked gzipped file.

Parameters:
  `toCompress` - The file to gzip.
  `compressed` - The gzipped file.
Throws:
  `IOException` - On error.

### compressFileUnchunked

public static void compressFileUnchunked(File toCompress, File compressed) throws IOException
Compressed a file to an unchunked gzipped file, but with more header fields compared to `GZIPOutputStream`.

Parameters:
  `toCompress` - The file to gzip.
  `compressed` - The gzipped file.
Throws:
  `IOException` - On error.

### compressFileChunked2

public static void compressFileChunked2(File toCompress, File compressed) throws IOException
Compressed a file to a chunked gzipped file. Note that there is no header CRC.

Parameters:
  `toCompress` - The file to gzip.
  `compressed` - The gzipped file.
Throws:
  `IOException` - On error.