Package ghidra.formats.gfilesystem
Class LocalFileSystem
- java.lang.Object
-
- ghidra.formats.gfilesystem.LocalFileSystem
-
- All Implemented Interfaces:
GFileHashProvider,GFileSystem,ExtensionPoint,java.io.Closeable,java.lang.AutoCloseable
public class LocalFileSystem extends java.lang.Object implements GFileSystem, GFileHashProvider
AGFileSystemimplementation giving access to the user's operating system's local file system.This implementation does not have a
GFileSystemFactoryas this class will be used as the single root filesystem.Closing() this filesystem does nothing.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringFSTYPE
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()ByteProvidergetByteProvider(GFile file, TaskMonitor monitor)Returns aByteProviderthat contains the contents of the specifiedGFile.FileAttributesgetFileAttributes(GFile file, TaskMonitor monitor)Returns a container ofFileAttributevalues.FileAttributesgetFileAttributes(java.io.File f)Create aFileAttributescontainer with info about the specified local file.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.io.FilegetLocalFile(FSRL fsrl)Convert a FSRL that points to this file system into a javaFile.FSRLgetLocalFSRL(java.io.File f)Converts aFileinto aFSRL.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.LocalFileSystemSubgetSubFileSystem(FSRL fsrl)Creates a new file system instance that is a sub-view limited to the specified directory.booleanisClosed()Returns true if the filesystem has beenclosedbooleanisLocalSubdir(FSRL fsrl)Returns true if theFSRLis a local filesystem subdirectory.booleanisStatic()Indicates if this filesystem is a static snapshot or changes.GFileImpllookup(java.lang.String path)Retrieves aGFilefrom this filesystem based on its full path and filename.static LocalFileSystemmakeGlobalRootFS()Create a new instancejava.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
getDescription, getFileCount, getType
-
-
-
-
Field Detail
-
FSTYPE
public static final java.lang.String FSTYPE
- See Also:
- Constant Field Values
-
-
Method Detail
-
makeGlobalRootFS
public static LocalFileSystem makeGlobalRootFS()
Create a new instance- Returns:
- new
LocalFileSysteminstance usingFSTYPEas its FSRL type.
-
getSubFileSystem
public LocalFileSystemSub getSubFileSystem(FSRL fsrl) throws java.io.IOException
Creates a new file system instance that is a sub-view limited to the specified directory.- Parameters:
fsrl-FSRLthat must be a directory in this local filesystem- Returns:
- new
LocalFileSystemSubinstance - Throws:
java.io.IOException- if bad FSRL
-
isLocalSubdir
public boolean isLocalSubdir(FSRL fsrl)
Returns true if theFSRLis a local filesystem subdirectory.- Parameters:
fsrl-FSRLto test.- Returns:
- boolean true if local filesystem directory.
-
getLocalFile
public java.io.File getLocalFile(FSRL fsrl) throws java.io.IOException
Convert a FSRL that points to this file system into a javaFile.- Parameters:
fsrl-FSRL- Returns:
File- Throws:
java.io.IOException- if FSRL does not point to this file system
-
getLocalFSRL
public FSRL getLocalFSRL(java.io.File f)
Converts aFileinto aFSRL.- Parameters:
f-File- Returns:
FSRL
-
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.
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
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)
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.
-
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
-
getFileAttributes
public FileAttributes getFileAttributes(java.io.File f)
Create aFileAttributescontainer with info about the specified local file.- Parameters:
f-Fileto query- Returns:
FileAttributesinstance
-
getFSRL
public FSRLRoot getFSRL()
Description copied from interface:GFileSystemFile system's FSRL- Specified by:
getFSRLin interfaceGFileSystem- Returns:
FSRLRootof this filesystem.
-
lookup
public GFileImpl 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.
-
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.
-
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.
-
getInputStream
public java.io.InputStream getInputStream(GFile file, TaskMonitor monitor) throws java.io.IOException
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 problem
-
getByteProvider
public ByteProvider getByteProvider(GFile file, TaskMonitor monitor) throws java.io.IOException
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 error
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
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
-
-