Class LocalFileSystem
- All Implemented Interfaces:
GFileHashProvider
,GFileSystem
,ExtensionPoint
,Closeable
,AutoCloseable
GFileSystem
implementation giving access to the user's operating system's
local file system.
This implementation does not have a GFileSystemFactory
as
this class will be used as the single root filesystem.
Closing() this filesystem does nothing.
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
getByteProvider
(GFile file, TaskMonitor monitor) Returns aByteProvider
that contains the contents of the specifiedGFile
.getFileAttributes
(GFile file, TaskMonitor monitor) Returns a container ofFileAttribute
values.Create aFileAttributes
container with info about the specified local file.getFSRL()
File system's FSRLgetInputStream
(GFile file, TaskMonitor monitor) Returns anInputStream
that contains the contents of the specifiedGFile
.getListing
(GFile directory) Returns a list offiles
that reside in the specified directory on this filesystem.getLocalFile
(FSRL fsrl) Convert a FSRL that points to this file system into a javaFile
.getLocalFSRL
(File f) getMD5Hash
(GFile file, boolean required, TaskMonitor monitor) Returns the MD5 hash of the specified file.getName()
File system volume name.Returns theref manager
that is responsible for creating and releasingrefs
to this filesystem.Returns the file system's root directory.getSubFileSystem
(FSRL fsrl) Creates a new file system instance that is a sub-view limited to the specified directory.boolean
isClosed()
Returns true if the filesystem has beenclosed
boolean
isLocalSubdir
(FSRL fsrl) Returns true if theFSRL
is a local filesystem subdirectory.boolean
isStatic()
Indicates if this filesystem is a static snapshot or changes.Retrieves aGFile
from this filesystem based on its full path and filename, using this filesystem's default name comparison logic (eg.static File
lookupFile
(File baseDir, String path, Comparator<String> nameComp) Looks up a file, by its string path, using a custom comparator.static LocalFileSystem
Create a new instanceresolveSymlinks
(GFile file) Converts the specified (symlink) file into it's destination, or if not a symlink, returns the original file unchanged.toString()
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 Details
-
FSTYPE
- See Also:
-
-
Method Details
-
makeGlobalRootFS
Create a new instance- Returns:
- new
LocalFileSystem
instance usingFSTYPE
as its FSRL type.
-
getSubFileSystem
Creates a new file system instance that is a sub-view limited to the specified directory.- Parameters:
fsrl
-FSRL
that must be a directory in this local filesystem- Returns:
- new
LocalFileSystemSub
instance - Throws:
IOException
- if bad FSRL
-
isLocalSubdir
Returns true if theFSRL
is a local filesystem subdirectory.- Parameters:
fsrl
-FSRL
to test.- Returns:
- boolean true if local filesystem directory.
-
getLocalFile
Convert a FSRL that points to this file system into a javaFile
.- Parameters:
fsrl
-FSRL
- Returns:
File
- Throws:
IOException
- if FSRL does not point to this file system
-
getLocalFSRL
-
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 interfaceGFileSystem
- Returns:
- string filesystem volume name.
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
isStatic
public boolean isStatic()Description copied from interface:GFileSystem
Indicates if this filesystem is a static snapshot or changes.- Specified by:
isStatic
in interfaceGFileSystem
- Returns:
- boolean true if the filesystem is static or false if dynamic content.
-
getListing
Description copied from interface:GFileSystem
Returns a list offiles
that reside in the specified directory on this filesystem.- Specified by:
getListing
in interfaceGFileSystem
- Parameters:
directory
- NULL means root of filesystem.- Returns:
List
ofGFile
instances of file in the requested directory.
-
getFileAttributes
Description copied from interface:GFileSystem
Returns a container ofFileAttribute
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 interfaceGFileSystem
- Parameters:
file
-GFile
to get the attributes formonitor
-TaskMonitor
- Returns:
FileAttributes
instance (possibly read-only), maybe empty but never null
-
getFileAttributes
Create aFileAttributes
container with info about the specified local file.- Parameters:
f
-File
to query- Returns:
FileAttributes
instance
-
getFSRL
Description copied from interface:GFileSystem
File system's FSRL- Specified by:
getFSRL
in interfaceGFileSystem
- Returns:
FSRLRoot
of this filesystem.
-
getRootDir
Description copied from interface:GFileSystem
Returns the file system's root directory.Note: using
null
when callingGFileSystem.getListing(GFile)
is also valid.- Specified by:
getRootDir
in interfaceGFileSystem
- Returns:
- file system's root directory
-
lookup
Description copied from interface:GFileSystem
Retrieves aGFile
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 interfaceGFileSystem
- Parameters:
path
- string path and filename of a file located in this filesystem. Usenull
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.
-
isClosed
public boolean isClosed()Description copied from interface:GFileSystem
Returns true if the filesystem has beenclosed
- Specified by:
isClosed
in interfaceGFileSystem
- Returns:
- boolean true if the filesystem has been closed.
-
getRefManager
Description copied from interface:GFileSystem
Returns theref manager
that is responsible for creating and releasingrefs
to this filesystem.- Specified by:
getRefManager
in interfaceGFileSystem
- Returns:
FileSystemRefManager
that manages references to this filesystem.
-
getInputStream
Description copied from interface:GFileSystem
Returns anInputStream
that contains the contents of the specifiedGFile
.The caller is responsible for closing the stream.
- Specified by:
getInputStream
in interfaceGFileSystem
- Parameters:
file
-GFile
to get an InputStream formonitor
-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
-
getByteProvider
Description copied from interface:GFileSystem
Returns aByteProvider
that contains the contents of the specifiedGFile
.The caller is responsible for closing the provider.
- Specified by:
getByteProvider
in interfaceGFileSystem
- Parameters:
file
-GFile
to get bytes formonitor
-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
-
resolveSymlinks
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 interfaceGFileSystem
- 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
-
toString
-
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 interfaceGFileHashProvider
- Parameters:
file
- theGFile
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 availablemonitor
-TaskMonitor
- Returns:
- MD5 hash as a string
- Throws:
CancelledException
- if cancelledIOException
- if error
-
lookupFile
Looks up a file, by its string path, using a custom comparator.If any element of the path, or the filename are not found, returns a null.
A null custom comparator avoids testing each element of the directory path and instead relies on the native local file system's name matching.
- Parameters:
baseDir
- optional directory to start lookup atpath
- String pathnameComp
- optionalComparator
that will compare filenames, ornull
to use native local file system lookup (eg. case-insensitive on windows)- Returns:
- File that points to the requested path, or null if file was not present on the local filesystem (because it doesn't exist, or the name comparison function rejected it)
-