Class LocalFileSystemSub

java.lang.Object
ghidra.formats.gfilesystem.LocalFileSystemSub
All Implemented Interfaces:
GFileHashProvider, GFileSystem, ExtensionPoint, Closeable, AutoCloseable

public class LocalFileSystemSub extends Object implements GFileSystem, GFileHashProvider
A GFileSystem interface to a part of the user's local / native file system.

This class is a sub-view of the LocalFileSystem, and returns hybrid GFile objects that have fully specified FSRL paths that are valid in the Root filesystem, but relative GFile paths.

This class's name doesn't end with "FileSystem" to ensure it will not be auto-discovered by the FileSystemFactoryMgr.

  • Constructor Details

  • Method Details

    • getType

      public String getType()
      Description copied from interface: GFileSystem
      Returns the type of this file system.

      This default implementation returns the type value in FileSystemInfo annotation.

      Specified by:
      getType in interface GFileSystem
      Returns:
      type string
    • getDescription

      public String getDescription()
      Description copied from interface: GFileSystem
      Returns a description of this file system.

      This default implementation returns the description value in FileSystemInfo annotation.

      Specified by:
      getDescription in interface GFileSystem
      Returns:
      description string
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • isClosed

      public boolean isClosed()
      Description copied from interface: GFileSystem
      Returns true if the filesystem has been closed
      Specified by:
      isClosed in interface GFileSystem
      Returns:
      boolean true if the filesystem has been closed.
    • isStatic

      public boolean isStatic()
      Description copied from interface: GFileSystem
      Indicates if this filesystem is a static snapshot or changes.
      Specified by:
      isStatic in interface GFileSystem
      Returns:
      boolean true if the filesystem is static or false if dynamic content.
    • getListing

      public List<GFile> getListing(GFile directory) throws IOException
      Description copied from interface: GFileSystem
      Returns a list of files that reside in the specified directory on this filesystem.

      Specified by:
      getListing in interface GFileSystem
      Parameters:
      directory - NULL means root of filesystem.
      Returns:
      List of GFile instances of file in the requested directory.
      Throws:
      IOException - if IO problem.
    • getFileAttributes

      public FileAttributes getFileAttributes(GFile file, TaskMonitor monitor)
      Description copied from interface: GFileSystem
      Returns a container of FileAttribute values.

      Implementors of this method are not required to add FSRL, NAME, or PATH values unless the values are non-standard.

      Specified by:
      getFileAttributes in interface GFileSystem
      Parameters:
      file - GFile to get the attributes for
      monitor - TaskMonitor
      Returns:
      FileAttributes instance (possibly read-only), maybe empty but never null
    • getName

      public String getName()
      Description copied from interface: GFileSystem
      File system volume name.

      Typically the name of the container file, or a internally stored 'volume' name.

      Specified by:
      getName in interface GFileSystem
      Returns:
      string filesystem volume name.
    • getFSRL

      public FSRLRoot getFSRL()
      Description copied from interface: GFileSystem
      File system's FSRL
      Specified by:
      getFSRL in interface GFileSystem
      Returns:
      FSRLRoot of this filesystem.
    • getRootDir

      public GFile getRootDir()
      Description copied from interface: GFileSystem
      Returns the file system's root directory.

      Note: using null when calling GFileSystem.getListing(GFile) is also valid.

      Specified by:
      getRootDir in interface GFileSystem
      Returns:
      file system's root directory
    • lookup

      public GFile lookup(String path) throws IOException
      Description copied from interface: GFileSystem
      Retrieves a GFile from this filesystem based on its full path and filename, using this filesystem's default name comparison logic (eg. case sensitive vs insensitive).

      Specified by:
      lookup in interface GFileSystem
      Parameters:
      path - string path and filename of a file located in this filesystem. Use null or "/" to retrieve the root directory
      Returns:
      GFile instance of requested file, null if not found.
      Throws:
      IOException - if IO error when looking up file.
    • lookup

      public GFile lookup(String path, Comparator<String> nameComp) throws IOException
      Description copied from interface: GFileSystem
      Retrieves a GFile from this filesystem based on its full path and filename, using the specified name comparison logic (eg. case sensitive vs insensitive).

      Specified by:
      lookup in interface GFileSystem
      Parameters:
      path - string path and filename of a file located in this filesystem. Use null or "/" to retrieve the root directory
      nameComp - string comparator used to compare filenames. Use null to specify the file system's native comparison logic.
      Returns:
      GFile instance of requested file, null if not found.
      Throws:
      IOException - if IO error when looking up file.
    • getInputStream

      public InputStream getInputStream(GFile file, TaskMonitor monitor) throws IOException, CancelledException
      Description copied from interface: GFileSystem
      Returns an InputStream that contains the contents of the specified GFile.

      The caller is responsible for closing the stream.

      Specified by:
      getInputStream in interface GFileSystem
      Parameters:
      file - GFile to get an InputStream for
      monitor - TaskMonitor to watch and update progress
      Returns:
      new InputStream contains the contents of the file or NULL if the file doesn't have data.
      Throws:
      IOException - if IO problem
      CancelledException - if user cancels.
    • getRefManager

      public FileSystemRefManager getRefManager()
      Description copied from interface: GFileSystem
      Returns the ref manager that is responsible for creating and releasing refs to this filesystem.

      Specified by:
      getRefManager in interface GFileSystem
      Returns:
      FileSystemRefManager that manages references to this filesystem.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getByteProvider

      public ByteProvider getByteProvider(GFile file, TaskMonitor monitor) throws IOException, CancelledException
      Description copied from interface: GFileSystem
      Returns a ByteProvider that contains the contents of the specified GFile.

      The caller is responsible for closing the provider.

      Specified by:
      getByteProvider in interface GFileSystem
      Parameters:
      file - GFile to get bytes for
      monitor - TaskMonitor to watch and update progress
      Returns:
      new ByteProvider that contains the contents of the file, or NULL if file doesn't have data
      Throws:
      IOException - if error
      CancelledException - if user cancels
    • getMD5Hash

      public String getMD5Hash(GFile file, boolean required, TaskMonitor monitor) throws CancelledException, IOException
      Description copied from interface: GFileHashProvider
      Returns the MD5 hash of the specified file.
      Specified by:
      getMD5Hash in interface GFileHashProvider
      Parameters:
      file - the GFile
      required - boolean flag, if true the hash will always be returned, even if it has to be calculated. If false, the hash will be returned if easily available
      monitor - TaskMonitor
      Returns:
      MD5 hash as a string
      Throws:
      CancelledException - if cancelled
      IOException - if error
    • resolveSymlinks

      public GFile resolveSymlinks(GFile file) throws IOException
      Description copied from interface: GFileSystem
      Converts the specified (symlink) file into it's destination, or if not a symlink, returns the original file unchanged.
      Specified by:
      resolveSymlinks in interface GFileSystem
      Parameters:
      file - symlink file to follow
      Returns:
      destination of symlink, or original file if not a symlink
      Throws:
      IOException - if error following symlink path, typically outside of the hosting file system