Class RandomAccessByteProvider

  • All Implemented Interfaces:
    ByteProvider, java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    RandomAccessMutableByteProvider

    public class RandomAccessByteProvider
    extends java.lang.Object
    implements ByteProvider
    An implementation of ByteProvider where the underlying bytes are supplied by a random access file.

    Note: this implementation is not thread-safe, and using an instance of this class from multiple threads will result in reading incorrect data and/or ArrayIndexOutOfBoundsExceptions.

    See SynchronizedByteProvider as a solution.

    • Constructor Detail

      • RandomAccessByteProvider

        public RandomAccessByteProvider​(java.io.File file)
                                 throws java.io.IOException
        Constructs a ByteProvider using the specified File.
        Parameters:
        file - the File to open for random access
        Throws:
        java.io.IOException - if the File does not exist or other error
      • RandomAccessByteProvider

        public RandomAccessByteProvider​(java.io.File file,
                                        FSRL fsrl)
                                 throws java.io.IOException
        Constructs a ByteProvider using the specified File and FSRL
        Parameters:
        file - the File to open for random access
        fsrl - the FSRL to use for the File's path
        Throws:
        java.io.IOException - if the File does not exist or other error
      • RandomAccessByteProvider

        public RandomAccessByteProvider​(java.io.File file,
                                        java.lang.String permissions)
                                 throws java.io.IOException
        Constructs a ByteProvider using the specified File and permissions
        Parameters:
        file - the File to open for random access
        permissions - indicating permissions used for open
        Throws:
        java.io.IOException - if the File does not exist or other error
    • Method Detail

      • getFSRL

        public FSRL getFSRL()
        Description copied from interface: ByteProvider
        Returns the FSRL of the underlying file for this byte provider, or null if this byte provider is not associated with a file.
        Specified by:
        getFSRL in interface ByteProvider
        Returns:
        The FSRL of the underlying File, or null if no associated File.
      • setFSRL

        public void setFSRL​(FSRL fsrl)
        Sets the FSRL of this ByteProvider
        Parameters:
        fsrl - the FSRL to assign to this byte provider
      • getFile

        public java.io.File getFile()
        Description copied from interface: ByteProvider
        Returns the underlying File for this ByteProvider, or null if this ByteProvider is not associated with a File.
        Specified by:
        getFile in interface ByteProvider
        Returns:
        the underlying file for this byte provider
      • getName

        public java.lang.String getName()
        Description copied from interface: ByteProvider
        Returns the name of the ByteProvider. For example, the underlying file name.
        Specified by:
        getName in interface ByteProvider
        Returns:
        the name of the ByteProvider or null if there is no name
      • getAbsolutePath

        public java.lang.String getAbsolutePath()
        Description copied from interface: ByteProvider
        Returns the absolute path (similar to, but not a, URI) to the ByteProvider. For example, the complete path to the file.
        Specified by:
        getAbsolutePath in interface ByteProvider
        Returns:
        the absolute path to the ByteProvider or null if not associated with a File.
      • getInputStream

        public java.io.InputStream getInputStream​(long index)
                                           throws java.io.IOException
        Description copied from interface: ByteProvider
        Returns an input stream to the underlying byte provider starting at the specified index.

        The caller is responsible for closing the returned InputStream instance.

        Specified by:
        getInputStream in interface ByteProvider
        Parameters:
        index - where in the ByteProvider to start the InputStream
        Returns:
        the InputStream
        Throws:
        java.io.IOException - if an I/O error occurs
      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: ByteProvider
        Releases any resources the ByteProvider may have occupied
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface ByteProvider
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException - if an I/O error occurs
      • isValidIndex

        public boolean isValidIndex​(long index)
        Description copied from interface: ByteProvider
        Returns true if the specified index is valid.
        Specified by:
        isValidIndex in interface ByteProvider
        Parameters:
        index - the index in the byte provider to check
        Returns:
        true if the specified index is valid
      • readByte

        public byte readByte​(long index)
                      throws java.io.IOException
        Description copied from interface: ByteProvider
        Reads a byte at the specified index
        Specified by:
        readByte in interface ByteProvider
        Parameters:
        index - the index of the byte to read
        Returns:
        the byte read from the specified index
        Throws:
        java.io.IOException - if an I/O error occurs
      • readBytes

        public byte[] readBytes​(long index,
                                long length)
                         throws java.io.IOException
        Description copied from interface: ByteProvider
        Reads a byte array at the specified index
        Specified by:
        readBytes in interface ByteProvider
        Parameters:
        index - the index of the byte to read
        length - the number of bytes to read
        Returns:
        the byte array read from the specified index
        Throws:
        java.io.IOException - if an I/O error occurs
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object