Package ghidra.app.util.bin

# Class RandomAccessByteProvider

java.lang.Object
ghidra.app.util.bin.RandomAccessByteProvider

All Implemented Interfaces:
  `ByteProvider`, `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `RandomAccessMutableByteProvider`

@Deprecated(since="10.1", forRemoval=true) public class RandomAccessByteProvider extends Object implements ByteProvider
Deprecated, for removal: This API element is subject to removal in a future version.
See `FileByteProvider` as replacement 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 `ArrayIndexOutOfBoundsException`s.

See `SynchronizedByteProvider` as a solution.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected File`
  `file`
  Deprecated, for removal: This API element is subject to removal in a future version.
  `protected GhidraRandomAccessFile`
  `randomAccessFile`
  Deprecated, for removal: This API element is subject to removal in a future version.

  ### Fields inherited from interface ghidra.app.util.bin.ByteProvider

  `EMPTY_BYTEPROVIDER`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RandomAccessByteProvider(File file)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Constructs a `ByteProvider` using the specified `File`.
  `RandomAccessByteProvider(File file, FSRL fsrl)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Constructs a `ByteProvider` using the specified `File` and `FSRL`
  `RandomAccessByteProvider(File file, String permissions)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Constructs a `ByteProvider` using the specified `File` and permissions

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Releases any resources the `ByteProvider` may have occupied
  `String`
  `getAbsolutePath()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the absolute path (similar to, but not a, URI) to the `ByteProvider`.
  `File`
  `getFile()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the underlying `File` for this `ByteProvider`, or null if this `ByteProvider` is not associated with a `File`.
  `FSRL`
  `getFSRL()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the `FSRL` of the underlying file for this byte provider, or null if this byte provider is not associated with a file.
  `InputStream`
  `getInputStream(long index)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns an input stream to the underlying byte provider starting at the specified index.
  `String`
  `getName()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the name of the `ByteProvider`.
  `boolean`
  `isValidIndex(long index)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns true if the specified index is valid.
  `long`
  `length()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the length of the `ByteProvider`
  `byte`
  `readByte(long index)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Reads a byte at the specified index
  `byte[]`
  `readBytes(long index, long length)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Reads a byte array at the specified index
  `void`
  `setFSRL(FSRL fsrl)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Sets the `FSRL` of this `ByteProvider`
  `String`
  `toString()`
  Deprecated, for removal: This API element is subject to removal in a future version.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface ghidra.app.util.bin.ByteProvider

  `isEmpty`

- ## Field Details

  - ### file

    protected File file
    Deprecated, for removal: This API element is subject to removal in a future version.

  - ### randomAccessFile

    protected GhidraRandomAccessFile randomAccessFile
    Deprecated, for removal: This API element is subject to removal in a future version.

- ## Constructor Details

  - ### RandomAccessByteProvider

    public RandomAccessByteProvider(File file) throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    Constructs a `ByteProvider` using the specified `File`.
    Parameters:
      `file` - the `File` to open for random access
    Throws:
      `IOException` - if the `File` does not exist or other error

  - ### RandomAccessByteProvider

    public RandomAccessByteProvider(File file, FSRL fsrl) throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    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:
      `IOException` - if the `File` does not exist or other error

  - ### RandomAccessByteProvider

    public RandomAccessByteProvider(File file, String permissions) throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    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:
      `IOException` - if the `File` does not exist or other error

- ## Method Details

  - ### getFSRL

    public FSRL getFSRL()
    Deprecated, for removal: This API element is subject to removal in a future version.
    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)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Sets the `FSRL` of this `ByteProvider`
    Parameters:
      `fsrl` - the `FSRL` to assign to this byte provider

  - ### getFile

    public File getFile()
    Deprecated, for removal: This API element is subject to removal in a future version.
    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 String getName()
    Deprecated, for removal: This API element is subject to removal in a future version.
    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 String getAbsolutePath()
    Deprecated, for removal: This API element is subject to removal in a future version.
    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 InputStream getInputStream(long index) throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    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.

    If you need to override this default implementation, please document why your inputstream is needed.

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

  - ### close

    public void close() throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    Description copied from interface: `ByteProvider`
    Releases any resources the `ByteProvider` may have occupied
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `ByteProvider`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException` - if an I/O error occurs

  - ### length

    public long length()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Description copied from interface: `ByteProvider`
    Returns the length of the `ByteProvider`
    Specified by:
      `length` in interface `ByteProvider`
    Returns:
      the length of the `ByteProvider`

  - ### isValidIndex

    public boolean isValidIndex(long index)
    Deprecated, for removal: This API element is subject to removal in a future version.
    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 IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    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:
      `IOException` - if an I/O error occurs

  - ### readBytes

    public byte[] readBytes(long index, long length) throws IOException
    Deprecated, for removal: This API element is subject to removal in a future version.
    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:
      `IOException` - if an I/O error occurs

  - ### toString

    public String toString()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Overrides:
      `toString` in class `Object`