Class SingleFileSystemIndexHelper

java.lang.Object
ghidra.formats.gfilesystem.SingleFileSystemIndexHelper

public class SingleFileSystemIndexHelper extends Object
A helper class used by GFilesystem implementors that have a single file to handle lookups and requests for that file.

This class is patterned on FileSystemIndexHelper and has pretty much the same api.

  • Constructor Details

    • SingleFileSystemIndexHelper

      public SingleFileSystemIndexHelper(GFileSystem fs, FSRLRoot fsFSRL, String payloadFilename, long length, String payloadMD5)
      Creates a new instance. A "root" directory GFile will be auto-created for the filesystem.

      Parameters:
      fs - the GFileSystem that this index will be for.
      fsFSRL - the fsrl of the filesystem itself. (this parameter is explicitly passed here so there is no possibility of trying to call back to the fs's GFileSystem.getFSRL() on a half-constructed filesystem.)
      payloadFilename - name of the single file that this filesystem holds.
      length - length of the payload file.
      payloadMD5 - md5 of the payload file.
  • Method Details

    • clear

      public void clear()
      Clears the data held by this object.
    • isPayloadFile

      public boolean isPayloadFile(GFile file)
      Returns true if the specified file is the payload file.
      Parameters:
      file - GFile to test
      Returns:
      boolean true if it is the payload file
    • isClosed

      public boolean isClosed()
      Returns true if this object has been clear()'ed.
      Returns:
      boolean true if data has been cleared.
    • getPayloadFile

      public GFile getPayloadFile()
      Gets the 'payload' file, ie. the main file of this filesystem.
      Returns:
      GFile payload file.
    • getRootDirFSRL

      public FSRL getRootDirFSRL()
      Gets the root dir's FSRL.
      Returns:
      FSRL of the root dir.
    • getRootDir

      public GFile getRootDir()
      Gets the root GFile object for this filesystem index.
      Returns:
      root GFile object.
    • getFileCount

      public int getFileCount()
      Number of files in this index.
      Returns:
      number of file in this index.
    • getListing

      public List<GFile> getListing(GFile directory) throws IOException
      Mirror's GFileSystem.getListing(GFile) interface.
      Parameters:
      directory - GFile directory to get the list of child files that have been added to this index, null means root directory.
      Returns:
      List of GFile files that are in the specified directory, never null.
      Throws:
      IOException - if already closed.
    • lookup

      public GFile lookup(String path)
      Mirror's GFileSystem.lookup(String) interface.
      Parameters:
      path - path and filename of a file to find (either "/" for root or the payload file's path).
      Returns:
      GFile instance or null if requested path is not the same as the payload file.
    • lookup

      public GFile lookup(GFile baseDir, String path, Comparator<String> nameComp)
      Mirror's GFileSystem.lookup(String) interface.
      Parameters:
      baseDir - starting directory
      path - path and filename of a file to find (either "/" for root or the payload file's path).
      nameComp - optional Comparator that compares file names. Suggested values are String::compareTo or String::compareToIgnoreCase or null.
      Returns:
      GFile instance or null if requested path is not the same as the payload file.
    • toString

      public String toString()
      Overrides:
      toString in class Object