Package io.roastedroot.zerofs
Class FileTree
- java.lang.Object
-
- io.roastedroot.zerofs.FileTree
-
final class FileTree extends java.lang.ObjectThe 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 Summary
Fields Modifier and Type Field Description private static java.util.List<Name>EMPTY_PATH_NAMESprivate static intMAX_SYMBOLIC_LINK_DEPTHDoesn't much matter, but this number comes from MIN_ELOOP_THRESHOLD hereprivate java.util.SortedMap<Name,Directory>rootsMap of root names to root directories.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private DirectoryEntryfollowSymbolicLink(File dir, SymbolicLink link, int linkDepth)Returns the directory entry located by the target path of the given symbolic link, resolved relative to the given directory.private DirectoryEntrygetRealEntry(DirectoryEntry entry)Returns the entry for the file in its parent directory.DirectoryEntrygetRoot(Name name)Gets the directory entry for the root with the given name ornullif no such root exists.java.util.SortedSet<Name>getRootDirectoryNames()Returns the names of the root directories in this tree.private static booleanisEmpty(java.util.List<Name> names)DirectoryEntrylookUp(File workingDirectory, ZeroFsPath path, java.util.Set<? super java.nio.file.LinkOption> options)Returns the result of the file lookup for the given path.private DirectoryEntrylookUp(File dir, ZeroFsPath path, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth)private DirectoryEntrylookUp(File dir, java.lang.Iterable<Name> names, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth)Looks up the given names against the given base file.private DirectoryEntrylookUpLast(File dir, Name name, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth)Looks up the last element of a path.private DirectorytoDirectory(File file)
-
-
-
Field Detail
-
MAX_SYMBOLIC_LINK_DEPTH
private static final int MAX_SYMBOLIC_LINK_DEPTH
Doesn't much matter, but this number comes from MIN_ELOOP_THRESHOLD here- See Also:
- Constant Field Values
-
EMPTY_PATH_NAMES
private static final java.util.List<Name> EMPTY_PATH_NAMES
-
-
Method Detail
-
getRootDirectoryNames
public java.util.SortedSet<Name> getRootDirectoryNames()
Returns the names of the root directories in this tree.
-
getRoot
public DirectoryEntry getRoot(Name name)
Gets the directory entry for the root with the given name ornullif no such root exists.
-
lookUp
public DirectoryEntry lookUp(File workingDirectory, ZeroFsPath path, java.util.Set<? super java.nio.file.LinkOption> options) throws java.io.IOException
Returns the result of the file lookup for the given path.- Throws:
java.io.IOException
-
lookUp
private DirectoryEntry lookUp(File dir, ZeroFsPath path, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth) throws java.io.IOException
- Throws:
java.io.IOException
-
lookUp
private DirectoryEntry lookUp(File dir, java.lang.Iterable<Name> names, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth) throws java.io.IOException
Looks up the given names against the given base file. If the file is not a directory, the lookup fails.- Throws:
java.io.IOException
-
lookUpLast
private DirectoryEntry lookUpLast(File dir, Name name, java.util.Set<? super java.nio.file.LinkOption> options, int linkDepth) throws java.io.IOException
Looks up the last element of a path.- Throws:
java.io.IOException
-
followSymbolicLink
private DirectoryEntry followSymbolicLink(File dir, SymbolicLink link, int linkDepth) throws java.io.IOException
Returns the directory entry located by the target path of the given symbolic link, resolved relative to the given directory.- Throws:
java.io.IOException
-
getRealEntry
private 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].
-
isEmpty
private static boolean isEmpty(java.util.List<Name> names)
-
-