Interface RangeReadable

  • All Superinterfaces:
    java.lang.AutoCloseable, java.io.Closeable

    public interface RangeReadable
    extends java.io.Closeable
    RangeReadable is an interface that allows for implementations of InputFile streams to perform positional, range-based reads, which are more efficient than unbounded reads in many cloud provider object stores.

    Thread safety is not a requirement of the interface and is left to the implementation.

    If the implementation is also a SeekableInputStream, the position of the stream is not required to be updated based on the positional reads performed by this interface. Usage of SeekableInputStream should always seek to the appropriate position for InputStream based reads.

    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default void readFully​(long position, byte[] buffer)
      Fill the entire buffer with the contents of the input source starting at position.
      void readFully​(long position, byte[] buffer, int offset, int length)
      Fill the provided buffer with the contents of the input source starting at position for the given offset and length.
      default int readTail​(byte[] buffer)
      Read the full size of the buffer from the end of the file.
      int readTail​(byte[] buffer, int offset, int length)
      Read the last length bytes from the file.
      • Methods inherited from interface java.io.Closeable

        close
    • Method Detail

      • readFully

        void readFully​(long position,
                       byte[] buffer,
                       int offset,
                       int length)
                throws java.io.IOException
        Fill the provided buffer with the contents of the input source starting at position for the given offset and length.
        Parameters:
        position - start position of the read
        buffer - target buffer to copy data
        offset - offset in the buffer to copy the data
        length - size of the read
        Throws:
        java.io.IOException
      • readFully

        default void readFully​(long position,
                               byte[] buffer)
                        throws java.io.IOException
        Fill the entire buffer with the contents of the input source starting at position.
        Parameters:
        position - start position of the read
        buffer - target buffer to copy data
        Throws:
        java.io.IOException
      • readTail

        int readTail​(byte[] buffer,
                     int offset,
                     int length)
              throws java.io.IOException
        Read the last length bytes from the file.
        Parameters:
        buffer - the buffer to write data into
        offset - the offset in the buffer to start writing
        length - the number of bytes from the end of the object to read
        Returns:
        the actual number of bytes read
        Throws:
        java.io.IOException - if an error occurs while reading
      • readTail

        default int readTail​(byte[] buffer)
                      throws java.io.IOException
        Read the full size of the buffer from the end of the file.
        Parameters:
        buffer - the buffer to write data into
        Returns:
        the actual number of bytes read
        Throws:
        java.io.IOException - if an error occurs while reading