Interface GFileSystem

  • All Superinterfaces:
    java.lang.AutoCloseable, java.io.Closeable, ExtensionPoint
    All Known Implementing Classes:
    GFileSystemBase, LocalFileSystem, LocalFileSystemSub

    public interface GFileSystem
    extends java.io.Closeable, ExtensionPoint
    Interface that represents a filesystem that contains files.

    Operations take a TaskMonitor if they need to be cancel-able.

    Use FileSystemService to discover and open instances of filesystems in files or to open a known FSRL path.

    NOTE:

    ALL GFileSystem sub-CLASSES MUST END IN "FileSystem". If not, the ClassSearcher will not find them.

    Also note that this interface came after the original abstract class GFileSystem and its many implementations, and usage is being migrated to this interface where possible and as time permits.

    • Method Detail

      • getName

        java.lang.String getName()
        File system volume name.

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

        Returns:
        string filesystem volume name.
      • getType

        default java.lang.String getType()
        Returns the type of this file system.

        This default implementation returns the type value in FileSystemInfo annotation.

        Returns:
        type string
      • getDescription

        default java.lang.String getDescription()
        Returns a description of this file system.

        This default implementation returns the description value in FileSystemInfo annotation.

        Returns:
        description string
      • getFSRL

        FSRLRoot getFSRL()
        File system's FSRL
        Returns:
        FSRLRoot of this filesystem.
      • isClosed

        boolean isClosed()
        Returns true if the filesystem has been closed
        Returns:
        boolean true if the filesystem has been closed.
      • isStatic

        default boolean isStatic()
        Indicates if this filesystem is a static snapshot or changes.
        Returns:
        boolean true if the filesystem is static or false if dynamic content.
      • getFileCount

        default int getFileCount()
        Returns the number of files in the filesystem, if known, otherwise -1 if not known.
        Returns:
        number of files in this filesystem, -1 if not known.
      • lookup

        GFile lookup​(java.lang.String path)
              throws java.io.IOException
        Retrieves a GFile from this filesystem based on its full path and filename.

        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:
        java.io.IOException - if IO error when looking up file.
      • getInputStream

        java.io.InputStream getInputStream​(GFile file,
                                           TaskMonitor monitor)
                                    throws java.io.IOException,
                                           CancelledException
        Returns an InputStream that contains the contents of the specified GFile.

        The caller is responsible for closing the stream.

        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:
        java.io.IOException - if IO problem
        CancelledException - if user cancels.
      • getListing

        java.util.List<GFile> getListing​(GFile directory)
                                  throws java.io.IOException
        Returns a list of files that reside in the specified directory on this filesystem.

        Parameters:
        directory - NULL means root of filesystem.
        Returns:
        List of GFile instances of file in the requested directory.
        Throws:
        java.io.IOException - if IO problem.
      • getInfo

        default java.lang.String getInfo​(GFile file,
                                         TaskMonitor monitor)
        Returns a multi-line string with information about the specified file.

        TODO: this method needs to be refactored to return a Map instead of a pre-formatted multi-line string.

        Parameters:
        file - GFile to get info message for.
        monitor - TaskMonitor to watch and update progress.
        Returns:
        multi-line formatted string with info about the file, or null.