Package ghidra.formats.gfilesystem
Class GFileSystemBase
- java.lang.Object
-
- ghidra.formats.gfilesystem.GFileSystemBase
-
- All Implemented Interfaces:
GFileSystem,ExtensionPoint,java.io.Closeable,java.lang.AutoCloseable
public abstract class GFileSystemBase extends java.lang.Object implements GFileSystem
This is the original GFileSystem implementation abstract base class, with most of the initially implemented filesystem types extending this class.The new GFileSystem interface is being retro-fitted into this equation to support better probing and factory syntax, and new implementations should be based on the interface instead of extending this abstract class.
NOTE: ALL GFileSystem sub-CLASSES MUST END IN "FileSystem". If not, the ClassSearcher will not find them. Yes, it is an implementation detail.
GFileSystemBase instances are constructed when probing a container file and are queried with
isValid(TaskMonitor)to determine if the container file is handled by the GFileSystemBase subclass.The
ByteProvidergiven to the constructor is not considered 'owned' by the GFileSystemBase instance until after it passes theisValidcheck and isopened.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringfileSystemNameprotected FileSystemServicefsServiceprotected ByteProviderproviderprotected GFileImplroot
-
Constructor Summary
Constructors Modifier Constructor Description protectedGFileSystemBase(java.lang.String fileSystemName, ByteProvider provider)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidclose()Closes the file system.protected voiddebug(byte[] bytes, java.lang.String fileName)Writes the given bytes to a tempfile in the temp directory.FSRLRootgetFSRL()File system's FSRLabstract java.util.List<GFile>getListing(GFile directory)Returns a list offilesthat reside in the specified directory on this filesystem.java.lang.StringgetName()Returns the name of this file system.FileSystemRefManagergetRefManager()Returns theref managerthat is responsible for creating and releasingrefsto this filesystem.booleanisClosed()Returns true if the filesystem has beenclosedabstract booleanisValid(TaskMonitor monitor)Returns true if this file system implementation can handle the bytes provided.GFilelookup(java.lang.String path)Retrieves aGFilefrom this filesystem based on its full path and filename.abstract voidopen(TaskMonitor monitor)Opens the file system.voidsetFilesystemService(FileSystemService fsService)voidsetFSRL(FSRLRoot fsrl)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
getByteProvider, getDescription, getFileAttributes, getFileCount, getInputStream, getType, isStatic
-
-
-
-
Field Detail
-
fileSystemName
protected java.lang.String fileSystemName
-
root
protected GFileImpl root
-
provider
protected ByteProvider provider
-
fsService
protected FileSystemService fsService
-
-
Constructor Detail
-
GFileSystemBase
protected GFileSystemBase(java.lang.String fileSystemName, ByteProvider provider)
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getFSRL
public FSRLRoot getFSRL()
Description copied from interface:GFileSystemFile system's FSRL- Specified by:
getFSRLin interfaceGFileSystem- Returns:
FSRLRootof this filesystem.
-
setFSRL
public void setFSRL(FSRLRoot fsrl)
-
setFilesystemService
public void setFilesystemService(FileSystemService fsService)
-
isValid
public abstract boolean isValid(TaskMonitor monitor) throws java.io.IOException
Returns true if this file system implementation can handle the bytes provided. This method should perform the minimal amount of checks required to determine validity. Keep it quick and tight!- Parameters:
monitor- a task monitor- Returns:
- true if valid for the byte provider
- Throws:
java.io.IOException- if an I/O error occurs
-
open
public abstract void open(TaskMonitor monitor) throws java.io.IOException, CryptoException, CancelledException
Opens the file system.- Throws:
java.io.IOException- if an I/O error occursCryptoException- if an encryption error occursCancelledException
-
close
public void close() throws java.io.IOExceptionCloses the file system. All resources should be released. (programs, temporary files, etc.)- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException- if an I/O error occurs
-
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.
-
getName
public final java.lang.String getName()
Returns the name of this file system.- Specified by:
getNamein interfaceGFileSystem- Returns:
- the name of this file system
-
getListing
public abstract 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.
-
debug
protected void debug(byte[] bytes, java.lang.String fileName)Writes the given bytes to a tempfile in the temp directory.- Parameters:
bytes- the bytes to writefileName- the prefix of the temp file name
-
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.
-
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.
-
-