Class FileTree

java.lang.Object
com.google.common.jimfs.FileTree

final class FileTree extends Object
The tree of directories and files for the file system. Contains the file system root directories and provides the ability to look up files by path. One piece of the file store implementation.
  • Field Details

    • EMPTY_PATH_NAMES

      private static final com.google.common.collect.ImmutableList<Name> EMPTY_PATH_NAMES
    • roots

      private final com.google.common.collect.ImmutableSortedMap<Name,Directory> roots
      Map of root names to root directories.
  • Constructor Details

    • FileTree

      FileTree(Map<Name,Directory> roots)
      Creates a new file tree with the given root directories.
  • Method Details

    • getRootDirectoryNames

      public com.google.common.collect.ImmutableSortedSet<Name> getRootDirectoryNames()
      Returns the names of the root directories in this tree.
    • getRoot

      public @Nullable DirectoryEntry getRoot(Name name)
      Gets the directory entry for the root with the given name or null if no such root exists.
    • lookUp

      public DirectoryEntry lookUp(File workingDirectory, JimfsPath path, Set<? super LinkOption> options) throws IOException
      Returns the result of the file lookup for the given path.
      Throws:
      IOException
    • lookUp

      private @Nullable DirectoryEntry lookUp(File dir, JimfsPath path, Set<? super LinkOption> options, int linkDepth) throws IOException
      Throws:
      IOException
    • lookUp

      private @Nullable DirectoryEntry lookUp(File dir, Iterable<Name> names, Set<? super LinkOption> options, int linkDepth) throws IOException
      Looks up the given names against the given base file. If the file is not a directory, the lookup fails.
      Throws:
      IOException
    • lookUpLast

      private @Nullable DirectoryEntry lookUpLast(@Nullable File dir, Name name, Set<? super LinkOption> options, int linkDepth) throws IOException
      Looks up the last element of a path.
      Throws:
      IOException
    • followSymbolicLink

      private @Nullable DirectoryEntry followSymbolicLink(File dir, SymbolicLink link, int linkDepth) throws IOException
      Returns the directory entry located by the target path of the given symbolic link, resolved relative to the given directory.
      Throws:
      IOException
    • getRealEntry

      private @Nullable DirectoryEntry getRealEntry(DirectoryEntry entry)
      Returns the entry for the file in its parent directory. This will be the given entry unless the name for the entry is "." or "..", in which the directory linking to the file is not the file's parent directory. In that case, we know the file must be a directory ("." and ".." can only link to directories), so we can just get the entry in the directory's parent directory that links to it. So, for example, if we have a directory "foo" that contains a directory "bar" and we find an entry [bar -> "." -> bar], we instead return the entry for bar in its parent, [foo -> "bar" -> bar].
    • toDirectory

      private @Nullable Directory toDirectory(@Nullable File file)
    • isEmpty

      private static boolean isEmpty(com.google.common.collect.ImmutableList<Name> names)