Class FileSlice
java.lang.Object
nonapi.io.github.classgraph.fileslice.Slice
nonapi.io.github.classgraph.fileslice.FileSlice
- All Implemented Interfaces:
Closeable
,AutoCloseable
A
File
slice.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ByteBuffer
The backing byte buffer, if any.final File
TheFile
.private FileChannel
The file channel.private final long
The file length.private final AtomicBoolean
True ifclose()
has been called.private final boolean
True if this is a top level file slice.TheRandomAccessFile
opened on theFile
.Fields inherited from class nonapi.io.github.classgraph.fileslice.Slice
inflatedLengthHint, isDeflatedZipEntry, nestedJarHandler, parentSlice, sliceLength, sliceStartPos
-
Constructor Summary
ConstructorsModifierConstructorDescriptionFileSlice
(File file, boolean isDeflatedZipEntry, long inflatedLengthHint, NestedJarHandler nestedJarHandler, LogNode log) Constructor for toplevel file slice.FileSlice
(File file, NestedJarHandler nestedJarHandler, LogNode log) Constructor for toplevel file slice.private
FileSlice
(FileSlice parentSlice, long offset, long length, boolean isDeflatedZipEntry, long inflatedLengthHint, NestedJarHandler nestedJarHandler) Constructor for treating a range of a file as a slice. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close the slice.boolean
int
hashCode()
byte[]
load()
Load the slice as a byte array.Read directly from FileChannel (slow path, but handles >2GB).read()
Read the slice into aByteBuffer
(or memory-map the slice to aMappedByteBuffer
, ifClassGraph.enableMemoryMapping()
was called.)slice
(long offset, long length, boolean isDeflatedZipEntry, long inflatedLengthHint) Slice the file.Methods inherited from class nonapi.io.github.classgraph.fileslice.Slice
loadAsString, open, open
-
Field Details
-
file
TheFile
. -
raf
TheRandomAccessFile
opened on theFile
. -
fileLength
private final long fileLengthThe file length. -
fileChannel
The file channel. -
backingByteBuffer
The backing byte buffer, if any. -
isTopLevelFileSlice
private final boolean isTopLevelFileSliceTrue if this is a top level file slice. -
isClosed
True ifclose()
has been called.
-
-
Constructor Details
-
FileSlice
private FileSlice(FileSlice parentSlice, long offset, long length, boolean isDeflatedZipEntry, long inflatedLengthHint, NestedJarHandler nestedJarHandler) Constructor for treating a range of a file as a slice.- Parameters:
parentSlice
- the parent sliceoffset
- the offset of the sub-slice within the parent slicelength
- the length of the sub-sliceisDeflatedZipEntry
- true if this is a deflated zip entryinflatedLengthHint
- the uncompressed size of a deflated zip entry, or -1 if unknown, or 0 of this is not a deflated zip entry.nestedJarHandler
- the nested jar handler
-
FileSlice
public FileSlice(File file, boolean isDeflatedZipEntry, long inflatedLengthHint, NestedJarHandler nestedJarHandler, LogNode log) throws IOException Constructor for toplevel file slice.- Parameters:
file
- the fileisDeflatedZipEntry
- true if this is a deflated zip entryinflatedLengthHint
- the uncompressed size of a deflated zip entry, or -1 if unknown, or 0 of this is not a deflated zip entry.nestedJarHandler
- the nested jar handlerlog
- the log- Throws:
IOException
- if the file cannot be opened.
-
FileSlice
Constructor for toplevel file slice.- Parameters:
file
- the filenestedJarHandler
- the nested jar handlerlog
- the log- Throws:
IOException
- if the file cannot be opened.
-
-
Method Details
-
slice
Slice the file.- Specified by:
slice
in classSlice
- Parameters:
offset
- the offset of the sub-slice within the parent slicelength
- the length of the sub-sliceisDeflatedZipEntry
- true if this is a deflated zip entryinflatedLengthHint
- the uncompressed size of a deflated zip entry, or -1 if unknown, or 0 of this is not a deflated zip entry.- Returns:
- the slice
-
randomAccessReader
Read directly from FileChannel (slow path, but handles >2GB).- Specified by:
randomAccessReader
in classSlice
- Returns:
- the random access reader
-
load
Load the slice as a byte array.- Specified by:
load
in classSlice
- Returns:
- the byte[]
- Throws:
IOException
- Signals that an I/O exception has occurred.
-
read
Read the slice into aByteBuffer
(or memory-map the slice to aMappedByteBuffer
, ifClassGraph.enableMemoryMapping()
was called.)- Overrides:
read
in classSlice
- Returns:
- the byte buffer
- Throws:
IOException
- Signals that an I/O exception has occurred.
-
equals
-
hashCode
public int hashCode() -
close
public void close()Close the slice. Unmaps any backingMappedByteBuffer
.
-