Class 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).
    • Method Detail

      • length

        public long length()
        Unknown length is Long.MAX_VALUE
        Overrides:
        length in class RandomAccessFile
      • 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
      • 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.
      • compressFileChunked2

        public static void compressFileChunked2​(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.