Class NIOFSDirectory.NIOFSIndexInput

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Cloneable, RandomAccessInput
    Enclosing class:
    NIOFSDirectory

    static final class NIOFSDirectory.NIOFSIndexInput
    extends BufferedIndexInput
    Reads bytes with FileChannel.read(ByteBuffer, long)
    • Field Detail

      • CHUNK_SIZE

        private static final int CHUNK_SIZE
        The maximum chunk size for reads of 16384 bytes.
        See Also:
        Constant Field Values
      • channel

        protected final java.nio.channels.FileChannel channel
        the file channel we will read from
      • isClone

        boolean isClone
        is this instance a clone and hence does not own the file to close it
      • off

        protected final long off
        start offset: non-zero in the slice case
      • end

        protected final long end
        end offset (start+length)
      • byteBuf

        private java.nio.ByteBuffer byteBuf
    • Constructor Detail

      • NIOFSIndexInput

        public NIOFSIndexInput​(java.lang.String resourceDesc,
                               java.nio.channels.FileChannel fc,
                               IOContext context)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • NIOFSIndexInput

        public NIOFSIndexInput​(java.lang.String resourceDesc,
                               java.nio.channels.FileChannel fc,
                               long off,
                               long length,
                               int bufferSize)
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Description copied from class: IndexInput
        Closes the stream to further operations.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class IndexInput
        Throws:
        java.io.IOException
      • clone

        public NIOFSDirectory.NIOFSIndexInput clone()
        Description copied from class: IndexInput
        Returns a clone of this stream.

        Clones of a stream access the same data, and are positioned at the same point as the stream they were cloned from.

        Expert: Subclasses must ensure that clones may be positioned at different points in the input from each other and from the stream they were cloned from.

        Warning: Lucene never closes cloned IndexInputs, it will only call IndexInput.close() on the original object.

        If you access the cloned IndexInput after closing the original object, any readXXX methods will throw AlreadyClosedException.

        This method is NOT thread safe, so if the current IndexInput is being used by one thread while clone is called by another, disaster could strike.

        Overrides:
        clone in class BufferedIndexInput
      • slice

        public IndexInput slice​(java.lang.String sliceDescription,
                                long offset,
                                long length)
                         throws java.io.IOException
        Description copied from class: IndexInput
        Creates a slice of this index input, with the given description, offset, and length. The slice is sought to the beginning.
        Overrides:
        slice in class BufferedIndexInput
        Throws:
        java.io.IOException
      • length

        public final long length()
        Description copied from class: IndexInput
        The number of bytes in the file.
        Specified by:
        length in class IndexInput
      • readInternal

        protected void readInternal​(byte[] b,
                                    int offset,
                                    int len)
                             throws java.io.IOException
        Description copied from class: BufferedIndexInput
        Expert: implements buffer refill. Reads bytes from the current position in the input.
        Specified by:
        readInternal in class BufferedIndexInput
        Parameters:
        b - the array to read bytes into
        offset - the offset in the array to start storing bytes
        len - the number of bytes to read
        Throws:
        java.io.IOException