Package org.eclipse.mat.hprof
Class ChunkedGZIPRandomAccessFile
- java.lang.Object
-
- java.io.RandomAccessFile
-
- org.eclipse.mat.hprof.ChunkedGZIPRandomAccessFile
-
- All Implemented Interfaces:
java.io.Closeable,java.io.DataInput,java.io.DataOutput,java.lang.AutoCloseable
public class ChunkedGZIPRandomAccessFile extends java.io.RandomAccessFileThis 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 classChunkedGZIPRandomAccessFile.ChunkedGZIPOutputStream
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()static voidcompressFileChunked(java.io.File toCompress, java.io.File compressed)Compressed a file to a chunked gzipped file.static voidcompressFileChunked2(java.io.File toCompress, java.io.File compressed)Compressed a file to a chunked gzipped file.static voidforget(java.io.File file)Forget all cached version of the file.static ChunkedGZIPRandomAccessFileget(java.io.RandomAccessFile raf, java.io.File file, java.lang.String prefix)Returns the random access file for the given file ornullif not supported for the file.longgetFilePointer()longgetLastPhysicalReadPosition()Returns an estimation of the last physical position we read from.static booleanisChunkedGZIPFile(java.io.RandomAccessFile raf)Checks if the given file is a chunked gzipped file.longlength()Unknown length is Long.MAX_VALUEintread()intread(byte[] buf)intread(byte[] buf, int off, int len)intread(long offset, byte[] b, int off, int len)Reads bytes from the gzip file.voidseek(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 java.io.IOException- Overrides:
seekin classjava.io.RandomAccessFile- Throws:
java.io.IOException
-
getFilePointer
public long getFilePointer()
- Overrides:
getFilePointerin classjava.io.RandomAccessFile
-
length
public long length()
Unknown length is Long.MAX_VALUE- Overrides:
lengthin classjava.io.RandomAccessFile
-
read
public int read() throws java.io.IOException- Overrides:
readin classjava.io.RandomAccessFile- Throws:
java.io.IOException
-
read
public int read(byte[] buf) throws java.io.IOException- Overrides:
readin classjava.io.RandomAccessFile- Throws:
java.io.IOException
-
read
public int read(byte[] buf, int off, int len) throws java.io.IOException- Overrides:
readin classjava.io.RandomAccessFile- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.RandomAccessFile- Throws:
java.io.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 java.io.IOExceptionReads 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:
java.io.IOException- On error.
-
isChunkedGZIPFile
public static boolean isChunkedGZIPFile(java.io.RandomAccessFile raf) throws java.io.IOExceptionChecks if the given file is a chunked gzipped file.- Parameters:
raf- The file to check.- Returns:
trueif the file is a chunked gzip file.- Throws:
java.io.IOException- On error.
-
get
public static ChunkedGZIPRandomAccessFile get(java.io.RandomAccessFile raf, java.io.File file, java.lang.String prefix) throws java.io.IOException
Returns the random access file for the given file ornullif 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:
java.io.IOException- problem reading the file
-
forget
public static void forget(java.io.File file)
Forget all cached version of the file.- Parameters:
file- The file to forget.
-
compressFileChunked
public static void compressFileChunked(java.io.File toCompress, java.io.File compressed) throws java.io.IOExceptionCompressed a file to a chunked gzipped file.- Parameters:
toCompress- The file to gzip.compressed- The gzipped file.- Throws:
java.io.IOException- On error.
-
compressFileChunked2
public static void compressFileChunked2(java.io.File toCompress, java.io.File compressed) throws java.io.IOExceptionCompressed a file to a chunked gzipped file.- Parameters:
toCompress- The file to gzip.compressed- The gzipped file.- Throws:
java.io.IOException- On error.
-
-