Interface FileSystemManager

  • All Superinterfaces:
    java.lang.AutoCloseable
    All Known Implementing Classes:
    DefaultFileSystemManager, StandardFileSystemManager

    public interface FileSystemManager
    extends java.lang.AutoCloseable
    A FileSystemManager manages a set of file systems. This interface is used to locate a FileObject by name from one of those file systems.

    To locate a FileObject, use one of the resolveFile() methods.

    File Naming

    A file system manager can recognise several types of file names:

    • Absolute URI. These must start with a scheme, such as file: or ftp:, followed by a scheme dependent file name. Some examples: file:/c:/somefile or ftp://somewhere.org/somefile.
    • Absolute local file name. For example, /home/someuser/a-file or c:\dir\somefile.html. Elements in the name can be separated using any of the following characters: /, \, or the native file separator character. For example, the following file names are the same: c:\somedir\somefile.xml and c:/somedir/somefile.xml.
    • Relative path. For example: ../somefile or somedir/file.txt. The file system manager resolves relative paths against its base file. Elements in the relative path can be separated using /, \, or file system specific separator characters. Relative paths may also contain .. and . elements. See FileObject.resolveFile(java.lang.String) for more details.
    • Method Detail

      • addOperationProvider

        void addOperationProvider​(java.lang.String scheme,
                                  FileOperationProvider operationProvider)
                           throws FileSystemException
        Adds the specified FileOperationProvider for the specified scheme.

        Several FileOperationProvider's might be registered for the same scheme. For example, for "file" scheme we can register SvnWsOperationProvider and CvsOperationProvider.

        Parameters:
        scheme - The scheme assoicated with this provider.
        operationProvider - The FileOperationProvider to add.
        Throws:
        FileSystemException - if an error occurs.
      • canCreateFileSystem

        boolean canCreateFileSystem​(FileObject file)
                             throws FileSystemException
        Determines if a layered file system can be created for a given file.
        Parameters:
        file - The file to check for.
        Returns:
        true if the FileSystem can be created.
        Throws:
        FileSystemException - if an error occurs.
      • close

        default void close()
        Closes this file system manager.
        Specified by:
        close in interface java.lang.AutoCloseable
        Since:
        2.5.0
      • closeFileSystem

        void closeFileSystem​(FileSystem fileSystem)
        Closes the given file system.

        If you use VFS as singleton it is VERY dangerous to call this method.

        Parameters:
        fileSystem - The FileSystem to close.
      • createFileSystem

        FileObject createFileSystem​(FileObject file)
                             throws FileSystemException
        Creates a layered file system. A layered file system is a file system that is created from the contents of a file, such as a zip or tar file.
        Parameters:
        file - The file to use to create the file system.
        Returns:
        The root file of the new file system.
        Throws:
        FileSystemException - On error creating the file system.
      • createFileSystem

        FileObject createFileSystem​(java.lang.String provider,
                                    FileObject file)
                             throws FileSystemException
        Creates a layered file system. A layered file system is a file system that is created from the contents of a file, such as a zip or tar file.
        Parameters:
        provider - The name of the file system provider to use. This name is the same as the scheme used in URI to identify the provider.
        file - The file to use to create the file system.
        Returns:
        The root file of the new file system.
        Throws:
        FileSystemException - On error creating the file system.
      • createVirtualFileSystem

        FileObject createVirtualFileSystem​(FileObject rootFile)
                                    throws FileSystemException
        Creates a virtual file system. The file system will contain a junction at the fs root to the supplied root file.
        Parameters:
        rootFile - The root file to backs the file system.
        Returns:
        The root of the new file system.
        Throws:
        FileSystemException - if an error occurs creating the VirtualFileSystem.
      • createVirtualFileSystem

        FileObject createVirtualFileSystem​(java.lang.String rootUri)
                                    throws FileSystemException
        Creates an empty virtual file system. Can be populated by adding junctions to it.
        Parameters:
        rootUri - The root URI to use for the new file system. Can be null.
        Returns:
        The root file of the new file system.
        Throws:
        FileSystemException - if an error occurs creating the VirtualFileSystem.
      • getCacheStrategy

        CacheStrategy getCacheStrategy()
        Gets the cache strategy used.
        Returns:
        the CacheStrategy.
      • getFileContentInfoFactory

        FileContentInfoFactory getFileContentInfoFactory()
        Gets the class to use to determine the content-type (mime-type).
        Returns:
        the FileContentInfoFactory.
      • getFileObjectDecorator

        java.lang.Class<?> getFileObjectDecorator()
        Gets the file object decorator used.
        Returns:
        the file object decorator Class.
      • getFileObjectDecoratorConst

        java.lang.reflect.Constructor<?> getFileObjectDecoratorConst()
        Gets the constructor associated to the fileObjectDecorator. We cache it here for performance reasons.
        Returns:
        the Constructor associated with the FileObjectDecorator.
      • getFilesCache

        FilesCache getFilesCache()
        Gets the cache used to cache file objects.
        Returns:
        The FilesCache.
      • getFileSystemConfigBuilder

        FileSystemConfigBuilder getFileSystemConfigBuilder​(java.lang.String scheme)
                                                    throws FileSystemException
        Gets the configuration builder for the given scheme.
        Parameters:
        scheme - The schem to use to obtain the FileSystemConfigBuidler.
        Returns:
        A FileSystemConfigBuilder appropriate for the given scheme.
        Throws:
        FileSystemException - if the given scheme is not konwn.
      • getOperationProviders

        FileOperationProvider[] getOperationProviders​(java.lang.String scheme)
                                               throws FileSystemException
        Gets Providers for file operations.
        Parameters:
        scheme - the scheme for wich we want to get the list af registered providers.
        Returns:
        the registered FileOperationProviders for the specified scheme. If there were no providers registered for the scheme, it returns null.
        Throws:
        FileSystemException - if an error occurs.
      • getProviderCapabilities

        java.util.Collection<Capability> getProviderCapabilities​(java.lang.String scheme)
                                                          throws FileSystemException
        Gets the capabilities for a given scheme.
        Parameters:
        scheme - The scheme to use to locate the provider's capabilities.
        Returns:
        A Collection of the various capabilities.
        Throws:
        FileSystemException - if the given scheme is not konwn.
      • getSchemes

        java.lang.String[] getSchemes()
        Gets the schemes currently available.
        Returns:
        An array of available scheme names that are supported.
      • getURLStreamHandlerFactory

        java.net.URLStreamHandlerFactory getURLStreamHandlerFactory()
        Returns a stream handler factory to enable URL lookup using this FileSystemManager.
        Returns:
        the URLStreamHandlerFactory.
      • hasProvider

        boolean hasProvider​(java.lang.String scheme)
        Returns true if this manager has a provider for a particular scheme.
        Parameters:
        scheme - The scheme for which a provider should be checked.
        Returns:
        true if a provider for the scheme is available.
      • resolveFile

        FileObject resolveFile​(java.io.File baseFile,
                               java.lang.String name)
                        throws FileSystemException
        Locates a file by name. See resolveFile(FileObject, String) for details.
        Parameters:
        baseFile - The base file to use to resolve relative paths. Must not be null, not even if the name is absolute.
        name - The name of the file.
        Returns:
        The file. Never returns null.
        Throws:
        FileSystemException - On error parsing the file name.
      • resolveFile

        FileObject resolveFile​(FileObject baseFile,
                               java.lang.String name)
                        throws FileSystemException
        Locates a file by name. The name is resolved as described above. That is, the name can be either an absolute URI, an absolute file name, or a relative path to be resolved against baseFile.

        Note that the file does not have to exist when this method is called.

        Parameters:
        baseFile - The base file to use to resolve relative paths. May be null if the name is an absolute file name.
        name - The name of the file.
        Returns:
        The file. Never returns null.
        Throws:
        FileSystemException - On error parsing the file name.
      • resolveFile

        FileObject resolveFile​(java.lang.String name)
                        throws FileSystemException
        Locates a file by name. Equivalent to calling resolveFile(getBaseFile(), name).
        Parameters:
        name - The name of the file.
        Returns:
        The file. Never returns null.
        Throws:
        FileSystemException - On error parsing the file name.
      • resolveFile

        FileObject resolveFile​(java.lang.String name,
                               FileSystemOptions fileSystemOptions)
                        throws FileSystemException
        Locates a file by name. Equivalent to calling resolveFile(getBaseFile(), name).
        Parameters:
        name - The name of the file.
        fileSystemOptions - The FileSystemOptions used for FileSystem creation. All files that are later resolved relative to the returned FileObject share the options.
        Returns:
        The file. Never returns null.
        Throws:
        FileSystemException - On error parsing the file name.
      • resolveName

        FileName resolveName​(FileName root,
                             java.lang.String name)
                      throws FileSystemException
        Resolves a name, relative to this file name. Equivalent to calling resolveName( path, NameScope.FILE_SYSTEM ).
        Parameters:
        root - the base file name
        name - The name to resolve.
        Returns:
        A FileName object representing the resolved file name.
        Throws:
        FileSystemException - If the name is invalid.
      • resolveName

        FileName resolveName​(FileName root,
                             java.lang.String name,
                             NameScope scope)
                      throws FileSystemException
        Resolves a name, relative to the "root" file name. Refer to NameScope for a description of how names are resolved.
        Parameters:
        root - the base file name
        name - The name to resolve.
        scope - The NameScope to use when resolving the name.
        Returns:
        A FileName object representing the resolved file name.
        Throws:
        FileSystemException - If the name is invalid.
      • resolveURI

        FileName resolveURI​(java.lang.String uri)
                     throws FileSystemException
        Resolves the URI to a file name.
        Parameters:
        uri - The URI to resolve.
        Returns:
        A FileName that matches the URI.
        Throws:
        FileSystemException - if this is not possible.
      • setLogger

        void setLogger​(org.apache.commons.logging.Log log)
        Sets the logger to use.
        Parameters:
        log - The logger to use.