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).
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods 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
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 ornull
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_VALUEint
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
-
-
-
-
Method Detail
-
seek
public void seek(long pos) throws IOException
- Overrides:
seek
in classRandomAccessFile
- Throws:
IOException
-
getFilePointer
public long getFilePointer()
- Overrides:
getFilePointer
in classRandomAccessFile
-
length
public long length()
Unknown length is Long.MAX_VALUE- Overrides:
length
in classRandomAccessFile
-
read
public int read() throws IOException
- Overrides:
read
in classRandomAccessFile
- Throws:
IOException
-
read
public int read(byte[] buf) throws IOException
- Overrides:
read
in classRandomAccessFile
- Throws:
IOException
-
read
public int read(byte[] buf, int off, int len) throws IOException
- Overrides:
read
in classRandomAccessFile
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classRandomAccessFile
- 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 ornull
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.
-
-