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 
      ChangeConstructor 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 
      ChangeModifier 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

  • 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)