Class FileByteProvider

java.lang.Object
ghidra.app.util.bin.FileByteProvider
All Implemented Interfaces:
ByteProvider, MutableByteProvider, Closeable, AutoCloseable
Direct Known Subclasses:
ObfuscatedFileByteProvider

public class FileByteProvider extends Object implements MutableByteProvider
A ByteProvider that reads its bytes from a file.
  • Constructor Details

  • Method Details

    • getAccessMode

      public AccessMode getAccessMode()
      Returns the access mode the file was opened with.
      Returns:
      AccessMode used to open file
    • close

      public void close() throws IOException
      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
    • getFile

      public 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 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 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.
    • 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.
    • length

      public long length() throws IOException
      Description copied from interface: ByteProvider
      Returns the length of the ByteProvider
      Specified by:
      length in interface ByteProvider
      Returns:
      the length of the ByteProvider
      Throws:
      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 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:
      IOException - if an I/O error occurs
    • readBytes

      public byte[] readBytes(long index, long length) throws 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:
      IOException - if an I/O error occurs
    • readBytes

      public int readBytes(long index, byte[] buffer, int offset, int length) throws IOException
      Read bytes at the specified index into the given byte array.

      See InputStream.read(byte[], int, int).

      Parameters:
      index - file offset to start reading
      buffer - byte array that will receive the bytes
      offset - offset inside the byte array to place the bytes
      length - number of bytes to read
      Returns:
      number of actual bytes read
      Throws:
      IOException - if error
    • finalize

      protected void finalize()
      Overrides:
      finalize in class Object
    • writeBytes

      public void writeBytes(long index, byte[] buffer, int offset, int length) throws IOException
      Writes bytes to the specified offset in the file.
      Parameters:
      index - the location in the file to starting writing
      buffer - bytes to write
      offset - offset in the buffer byte array to start
      length - number of bytes to write
      Throws:
      IOException - if bad AccessMode or other io error
    • writeByte

      public void writeByte(long index, byte value) throws IOException
      Description copied from interface: MutableByteProvider
      Writes a byte at the specified index.
      Specified by:
      writeByte in interface MutableByteProvider
      Parameters:
      index - the index to write the byte
      value - the value to write at the specified index
      Throws:
      IOException - if an I/O error occurs
    • writeBytes

      public void writeBytes(long index, byte[] values) throws IOException
      Description copied from interface: MutableByteProvider
      Writes a byte array at the specified index.
      Specified by:
      writeBytes in interface MutableByteProvider
      Parameters:
      index - the index to write the byte array
      values - the values to write at the specified index
      Throws:
      IOException - if an I/O error occurs
    • doReadBytes

      protected int doReadBytes(long index, byte[] buffer) throws IOException
      Reads bytes from the file.

      Protected by synchronized lock. (See getBufferFor(long)).

      Parameters:
      index - file position of where to read
      buffer - byte array that will receive bytes
      Returns:
      actual number of byte read
      Throws:
      IOException - if error
    • doWriteBytes

      protected void doWriteBytes(long index, byte[] buffer, int offset, int length) throws IOException
      Writes the specified bytes to the file.

      Protected by synchronized lock (See writeBytes(long, byte[], int, int))

      Parameters:
      index - file position of where to write
      buffer - byte array containing bytes to write
      offset - offset inside of byte array to start
      length - number of bytes from buffer to write
      Throws:
      IOException - if error