Interface FileSystem

All Superinterfaces:
AutoCloseable, Closeable
All Known Implementing Classes:
AssemblyFileSystem, JavaZipFileSystem, RealFileSystem, RootFileSystem

public interface FileSystem extends Closeable
A file system which is mounted in to the VFS. This is the driver class for a given virtual file system type. An instance of FileSystem will be mounted at some point on a VFS. The specific instance is only called when a file from this filesystem is called upon. The path components passed in to the operations are canonical, with no "." or ".." components.
  • Method Details

    • getFile

      File getFile(VirtualFile mountPoint, VirtualFile target) throws IOException
      Get a real File for the given path within this filesystem. Some filesystem types will need to make a copy in order to return this file; such copies should be cached and retained until the filesystem is closed. Depending on the file type, the real path of the returned File may or may not bear a relationship to the virtual path provided; if such a relationship is required, it must be negotiated at the time the filesystem is mounted.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      the file instance
      Throws:
      IOException - if an I/O error occurs
    • openInputStream

      InputStream openInputStream(VirtualFile mountPoint, VirtualFile target) throws IOException
      Open an input stream for the file at the given relative path.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      the input stream
      Throws:
      IOException - if an I/O error occurs
    • isReadOnly

      boolean isReadOnly()
      Determine whether this filesystem is read-only. A read-only filesystem prohibits file modification or deletion. It is not an error to mount a read-write filesystem within a read-only filesystem however (this operation does not take place within the FileSystem implementation).
      Returns:
      true if the filesystem is read-only
    • delete

      boolean delete(VirtualFile mountPoint, VirtualFile target)
      Attempt to delete a virtual file within this filesystem.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      true if the file was deleted, false if it failed for any reason
    • getSize

      long getSize(VirtualFile mountPoint, VirtualFile target)
      Get the size of a virtual file within this filesystem.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      the size, in bytes, or 0L if the file does not exist or is a directory
    • getLastModified

      long getLastModified(VirtualFile mountPoint, VirtualFile target)
      Get the last modification time of a virtual file within this filesystem.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      the modification time in milliseconds, or 0L if the file does not exist or if an error occurs
    • exists

      boolean exists(VirtualFile mountPoint, VirtualFile target)
      Ascertain the existance of a virtual file within this filesystem.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      true if the file exists, false otherwise
      Throws:
      IOException - if an I/O error occurs
    • isFile

      boolean isFile(VirtualFile mountPoint, VirtualFile target)
      Ascertain whether a virtual file within this filesystem is a plain file.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      true if the file exists and is a plain file, false otherwise
    • isDirectory

      boolean isDirectory(VirtualFile mountPoint, VirtualFile target)
      Ascertain whether a virtual file within this filesystem is a directory.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      true if the file exists and is a directory, false otherwise
    • getDirectoryEntries

      List<String> getDirectoryEntries(VirtualFile mountPoint, VirtualFile target)
      Read a directory. Returns all the simple path names (excluding "." and ".."). The returned list will be empty if the node is not a directory.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      the collection of children names
    • getCodeSigners

      CodeSigner[] getCodeSigners(VirtualFile mountPoint, VirtualFile target)
      Get the CodeSigners for a the virtual file.
      Parameters:
      mountPoint - the mount point of the filesystem instance (guaranteed to be a parent of target)
      target - the virtual file to act upon
      Returns:
      CodeSigner for the virtual file or null if not signed.
    • close

      void close() throws IOException
      Destroy this filesystem instance. After this method is called, the filesystem may not be used in any way. This method should be called only after all mounts of this filesystem have been cleared; otherwise, VFS accesses may result in IOExceptions.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if an I/O error occurs during close
    • getMountSource

      File getMountSource()
      Get the File source provided at mount time.
      Returns:
      the source used for mounting
    • getRootURI

      URI getRootURI() throws URISyntaxException
      Get the root URI for this file system, or null if there is no valid root URI.
      Returns:
      the root URI
      Throws:
      URISyntaxException - if the URI isn't valid