Class LocalFileSystemSub
- java.lang.Object
-
- ghidra.formats.gfilesystem.LocalFileSystemSub
-
- All Implemented Interfaces:
GFileHashProvider,GFileSystem,ExtensionPoint,java.io.Closeable,java.lang.AutoCloseable
public class LocalFileSystemSub extends java.lang.Object implements GFileSystem, GFileHashProvider
AGFileSysteminterface 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 Summary
Constructors Constructor Description LocalFileSystemSub(java.io.File rootDir, LocalFileSystem rootFS)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()ByteProvidergetByteProvider(GFile file, TaskMonitor monitor)Returns aByteProviderthat contains the contents of the specifiedGFile.java.lang.StringgetDescription()Returns a description of this file system.FileAttributesgetFileAttributes(GFile file, TaskMonitor monitor)Returns a container ofFileAttributevalues.FSRLRootgetFSRL()File system's FSRLjava.io.InputStreamgetInputStream(GFile file, TaskMonitor monitor)Returns anInputStreamthat contains the contents of the specifiedGFile.java.util.List<GFile>getListing(GFile directory)Returns a list offilesthat reside in the specified directory on this filesystem.java.lang.StringgetMD5Hash(GFile file, boolean required, TaskMonitor monitor)Returns the MD5 hash of the specified file.java.lang.StringgetName()File system volume name.FileSystemRefManagergetRefManager()Returns theref managerthat is responsible for creating and releasingrefsto this filesystem.java.lang.StringgetType()Returns the type of this file system.booleanisClosed()Returns true if the filesystem has beenclosedbooleanisStatic()Indicates if this filesystem is a static snapshot or changes.GFilelookup(java.lang.String path)Retrieves aGFilefrom this filesystem based on its full path and filename.java.lang.StringtoString()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ghidra.formats.gfilesystem.GFileSystem
getFileCount
-
-
-
-
Constructor Detail
-
LocalFileSystemSub
public LocalFileSystemSub(java.io.File rootDir, LocalFileSystem rootFS) throws java.io.IOException- Throws:
java.io.IOException
-
-
Method Detail
-
getType
public java.lang.String getType()
Description copied from interface:GFileSystemReturns the type of this file system.This default implementation returns the type value in
FileSystemInfoannotation.- Specified by:
getTypein interfaceGFileSystem- Returns:
- type string
-
getDescription
public java.lang.String getDescription()
Description copied from interface:GFileSystemReturns a description of this file system.This default implementation returns the description value in
FileSystemInfoannotation.- Specified by:
getDescriptionin interfaceGFileSystem- Returns:
- description string
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
isClosed
public boolean isClosed()
Description copied from interface:GFileSystemReturns true if the filesystem has beenclosed- Specified by:
isClosedin interfaceGFileSystem- Returns:
- boolean true if the filesystem has been closed.
-
isStatic
public boolean isStatic()
Description copied from interface:GFileSystemIndicates if this filesystem is a static snapshot or changes.- Specified by:
isStaticin interfaceGFileSystem- Returns:
- boolean true if the filesystem is static or false if dynamic content.
-
getListing
public java.util.List<GFile> getListing(GFile directory) throws java.io.IOException
Description copied from interface:GFileSystemReturns a list offilesthat reside in the specified directory on this filesystem.- Specified by:
getListingin interfaceGFileSystem- Parameters:
directory- NULL means root of filesystem.- Returns:
ListofGFileinstances of file in the requested directory.- Throws:
java.io.IOException- if IO problem.
-
getFileAttributes
public FileAttributes getFileAttributes(GFile file, TaskMonitor monitor)
Description copied from interface:GFileSystemReturns a container ofFileAttributevalues.Implementors of this method are not required to add FSRL, NAME, or PATH values unless the values are non-standard.
- Specified by:
getFileAttributesin interfaceGFileSystem- Parameters:
file-GFileto get the attributes formonitor-TaskMonitor- Returns:
FileAttributesinstance (possibly read-only), maybe empty but never null
-
getName
public java.lang.String getName()
Description copied from interface:GFileSystemFile system volume name.Typically the name of the container file, or a internally stored 'volume' name.
- Specified by:
getNamein interfaceGFileSystem- Returns:
- string filesystem volume name.
-
getFSRL
public FSRLRoot getFSRL()
Description copied from interface:GFileSystemFile system's FSRL- Specified by:
getFSRLin interfaceGFileSystem- Returns:
FSRLRootof this filesystem.
-
lookup
public GFile lookup(java.lang.String path) throws java.io.IOException
Description copied from interface:GFileSystemRetrieves aGFilefrom this filesystem based on its full path and filename.- Specified by:
lookupin interfaceGFileSystem- Parameters:
path- string path and filename of a file located in this filesystem. Usenullor "/" to retrieve the root directory- Returns:
GFileinstance of requested file, null if not found.- Throws:
java.io.IOException- if IO error when looking up file.
-
getInputStream
public java.io.InputStream getInputStream(GFile file, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from interface:GFileSystemReturns anInputStreamthat contains the contents of the specifiedGFile.The caller is responsible for closing the stream.
- Specified by:
getInputStreamin interfaceGFileSystem- Parameters:
file-GFileto get an InputStream formonitor-TaskMonitorto watch and update progress- Returns:
- new
InputStreamcontains the contents of the file or NULL if the file doesn't have data. - Throws:
java.io.IOException- if IO problemCancelledException- if user cancels.
-
getRefManager
public FileSystemRefManager getRefManager()
Description copied from interface:GFileSystemReturns theref managerthat is responsible for creating and releasingrefsto this filesystem.- Specified by:
getRefManagerin interfaceGFileSystem- Returns:
FileSystemRefManagerthat manages references to this filesystem.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getByteProvider
public ByteProvider getByteProvider(GFile file, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from interface:GFileSystemReturns aByteProviderthat contains the contents of the specifiedGFile.The caller is responsible for closing the provider.
- Specified by:
getByteProviderin interfaceGFileSystem- Parameters:
file-GFileto get bytes formonitor-TaskMonitorto watch and update progress- Returns:
- new
ByteProviderthat contains the contents of the file, or NULL if file doesn't have data - Throws:
java.io.IOException- if errorCancelledException- if user cancels
-
getMD5Hash
public java.lang.String getMD5Hash(GFile file, boolean required, TaskMonitor monitor) throws CancelledException, java.io.IOException
Description copied from interface:GFileHashProviderReturns the MD5 hash of the specified file.- Specified by:
getMD5Hashin interfaceGFileHashProvider- Parameters:
file- theGFilerequired- 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 availablemonitor-TaskMonitor- Returns:
- MD5 hash as a string
- Throws:
CancelledException- if cancelledjava.io.IOException- if error
-
-