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 Summary

      Constructors 
      Constructor Description
      RandomAccessByteProvider​(java.io.File file)
      Constructs a byte provider using the specified file
      RandomAccessByteProvider​(java.io.File file, FSRL fsrl)
      Constructs a byte provider using the specified file and FSRL.
      RandomAccessByteProvider​(java.io.File file, java.lang.String permissions)
      Constructs a byte provider using the specified file and permissions string
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes the underlying random-access file.
      java.lang.String getAbsolutePath()
      Returns the absolute path (similar to, but not a, URI) to the byte provider.
      java.io.File getFile()
      Returns the underlying file for this byte provider.
      FSRL getFSRL()
      Returns the FSRL of the underlying file for this byte provider, or null if this byte provider is not associated with a file.
      java.io.InputStream getInputStream​(long index)
      Returns an input stream to the underlying byte provider starting at the specified index
      java.lang.String getName()
      Returns the name of the byte provider.
      boolean isValidIndex​(long index)
      Returns true if the specified index is valid.
      long length()
      Returns the length of the underlying provider.
      byte readByte​(long index)
      Reads a byte at the specified index.
      byte[] readBytes​(long index, long length)
      Reads a byte array at the specified index.
      void setFSRL​(FSRL fsrl)
      Sets the FSRL of this byte provider.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RandomAccessByteProvider

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

        public RandomAccessByteProvider​(java.io.File file,
                                        FSRL fsrl)
                                 throws java.io.IOException
        Constructs a byte provider 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.FileNotFoundException - if the file does not exist
        java.io.IOException
      • RandomAccessByteProvider

        public RandomAccessByteProvider​(java.io.File file,
                                        java.lang.String permissions)
                                 throws java.io.IOException
        Constructs a byte provider using the specified file and permissions string
        Parameters:
        file - the file to open for random access
        string - indicating permissions used for open
        Throws:
        java.io.FileNotFoundException - if the file does not exist
        java.io.IOException
    • 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:
        FSRL of the underlying file, or null if no associated file.
      • setFSRL

        public void setFSRL​(FSRL fsrl)
        Sets the FSRL of this byte provider.
        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 byte provider. Or null if this byte provider is not associated with a file.
        Specified by:
        getFile in interface ByteProvider
        Returns:
        the underlying file for this byte provider
        See Also:
        ByteProvider.getFile()
      • getName

        public java.lang.String getName()
        Description copied from interface: ByteProvider
        Returns the name of the byte provider. For example, the underlying file name.
        Specified by:
        getName in interface ByteProvider
        Returns:
        the name of the byte provider or null
        See Also:
        ByteProvider.getName()
      • getAbsolutePath

        public java.lang.String getAbsolutePath()
        Description copied from interface: ByteProvider
        Returns the absolute path (similar to, but not a, URI) to the byte provider. For example, the complete path to the file.
        Specified by:
        getAbsolutePath in interface ByteProvider
        Returns:
        the absolute path to the byte provider or null
      • 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 - the index to initialize the input stream
        Returns:
        the input stream
        Throws:
        java.io.IOException - if an I/O error occurs
        See Also:
        ByteProvider.getInputStream(long)
      • close

        public void close()
                   throws java.io.IOException
        Closes the underlying random-access file.
        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
      • length

        public long length()
                    throws java.io.IOException
        Description copied from interface: ByteProvider
        Returns the length of the underlying provider.
        Specified by:
        length in interface ByteProvider
        Returns:
        the length of the underlying provider
        Throws:
        java.io.IOException - if an I/O error occurs
        See Also:
        ByteProvider.length()
      • 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
        Returns:
        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 to read the byte
        Returns:
        the byte read from the specified index
        Throws:
        java.io.IOException - if an I/O error occurs
        See Also:
        ByteProvider.readByte(long)
      • 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 to read the byte array
        length - the number of elements to read
        Returns:
        the byte array read from the specified index
        Throws:
        java.io.IOException - if an I/O error occurs
        See Also:
        ByteProvider.readBytes(long, long)