Class RandomAccessFileChannelReader
java.lang.Object
nonapi.io.github.classgraph.fileslice.reader.RandomAccessFileChannelReader
- All Implemented Interfaces:
RandomAccessReader
RandomAccessReader for a File. Reads in little endian order, as required by the zipfile
format.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final FileChannelThe file channel.private ByteBufferThe reusable byte buffer.private final byte[]The scratch arr.private final ByteBufferThe scratch byte buf.private final longThe slice length.private final longThe slice start pos.private byte[]The utf 8 bytes. -
Constructor Summary
ConstructorsConstructorDescriptionRandomAccessFileChannelReader(FileChannel fileChannel, long sliceStartPos, long sliceLength) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionintread(long srcOffset, byte[] dstArr, int dstArrStart, int numBytes) Read bytes into a byte array.intread(long srcOffset, ByteBuffer dstBuf, int dstBufStart, int numBytes) Read bytes into aByteBuffer.bytereadByte(long offset) Read a byte at a specific offset (without changing the current cursor offset).intreadInt(long offset) Read a int at a specific offset (without changing the current cursor offset).longreadLong(long offset) Read a long at a specific offset (without changing the current cursor offset).shortreadShort(long offset) Read a short at a specific offset (without changing the current cursor offset).readString(long offset, int numBytes) Reads the "modified UTF8" format defined in the Java classfile spec.readString(long offset, int numBytes, boolean replaceSlashWithDot, boolean stripLSemicolon) Reads the "modified UTF8" format defined in the Java classfile spec, optionally replacing '/' with '.', and optionally removing the prefix "L" and the suffix ";".intreadUnsignedByte(long offset) Read an unsigned byte at a specific offset (without changing the current cursor offset).longreadUnsignedInt(long offset) Read a unsigned int at a specific offset (without changing the current cursor offset).intreadUnsignedShort(long offset) Read a unsigned short at a specific offset (without changing the current cursor offset).
-
Field Details
-
fileChannel
The file channel. -
sliceStartPos
private final long sliceStartPosThe slice start pos. -
sliceLength
private final long sliceLengthThe slice length. -
reusableByteBuffer
The reusable byte buffer. -
scratchArr
private final byte[] scratchArrThe scratch arr. -
scratchByteBuf
The scratch byte buf. -
utf8Bytes
private byte[] utf8BytesThe utf 8 bytes.
-
-
Constructor Details
-
RandomAccessFileChannelReader
Constructor.- Parameters:
fileChannel- the file channelsliceStartPos- the slice start possliceLength- the slice length
-
-
Method Details
-
read
public int read(long srcOffset, ByteBuffer dstBuf, int dstBufStart, int numBytes) throws IOException Description copied from interface:RandomAccessReaderRead bytes into aByteBuffer.- Specified by:
readin interfaceRandomAccessReader- Parameters:
srcOffset- The offset to start reading from.dstBuf- TheByteBufferto write into.dstBufStart- The offset within the destination buffer to start writing at.numBytes- The number of bytes to read.- Returns:
- The number of bytes actually read, or -1 if no more bytes could be read.
- Throws:
IOException- If there was an exception while reading.
-
read
Description copied from interface:RandomAccessReaderRead bytes into a byte array.- Specified by:
readin interfaceRandomAccessReader- Parameters:
srcOffset- The offset to start reading from.dstArr- The byte array to write into.dstArrStart- The offset within the destination array to start writing at.numBytes- The number of bytes to read.- Returns:
- The number of bytes actually read, or -1 if no more bytes could be read.
- Throws:
IOException- If there was an exception while reading.
-
readByte
Description copied from interface:RandomAccessReaderRead a byte at a specific offset (without changing the current cursor offset).- Specified by:
readBytein interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The byte at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readUnsignedByte
Description copied from interface:RandomAccessReaderRead an unsigned byte at a specific offset (without changing the current cursor offset).- Specified by:
readUnsignedBytein interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The unsigned byte at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readShort
Description copied from interface:RandomAccessReaderRead a short at a specific offset (without changing the current cursor offset).- Specified by:
readShortin interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The short at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readUnsignedShort
Description copied from interface:RandomAccessReaderRead a unsigned short at a specific offset (without changing the current cursor offset).- Specified by:
readUnsignedShortin interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The unsigned short at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readInt
Description copied from interface:RandomAccessReaderRead a int at a specific offset (without changing the current cursor offset).- Specified by:
readIntin interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The int at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readUnsignedInt
Description copied from interface:RandomAccessReaderRead a unsigned int at a specific offset (without changing the current cursor offset).- Specified by:
readUnsignedIntin interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The int at the offset, as a long.
- Throws:
IOException- If there was an exception while reading.
-
readLong
Description copied from interface:RandomAccessReaderRead a long at a specific offset (without changing the current cursor offset).- Specified by:
readLongin interfaceRandomAccessReader- Parameters:
offset- The buffer offset to read from.- Returns:
- The long at the offset.
- Throws:
IOException- If there was an exception while reading.
-
readString
public String readString(long offset, int numBytes, boolean replaceSlashWithDot, boolean stripLSemicolon) throws IOException Description copied from interface:RandomAccessReaderReads the "modified UTF8" format defined in the Java classfile spec, optionally replacing '/' with '.', and optionally removing the prefix "L" and the suffix ";".- Specified by:
readStringin interfaceRandomAccessReader- Parameters:
offset- The start offset of the string.numBytes- The number of bytes of the UTF8 encoding of the string.replaceSlashWithDot- If true, replace '/' with '.'.stripLSemicolon- If true, string final ';' character.- Returns:
- The string.
- Throws:
IOException- If an I/O exception occurs.
-
readString
Description copied from interface:RandomAccessReaderReads the "modified UTF8" format defined in the Java classfile spec.- Specified by:
readStringin interfaceRandomAccessReader- Parameters:
offset- The start offset of the string.numBytes- The number of bytes of the UTF8 encoding of the string.- Returns:
- The string.
- Throws:
IOException- If an I/O exception occurs.
-