@Experimental(value=FILESYSTEM) public interface ResourceId extends java.io.Serializable
ResourceId is hierarchical and composed of a sequence of directory and file name
elements separated by a special separator or delimiter.
ResourceIds are created using FileSystems. The two primary
mechanisms are:
FileSystems.match(java.util.List), which takes a list of String resource
names or globs, queries the FileSystem for resources matching these specifications,
and returns a MatchResult for each glob. This is typically used when reading from
files.
FileSystems.matchNewResource(String, boolean), which takes a String full
resource name and type (file or directory) and generates a FileSystem-specific
ResourceId for that resource. This call does not verify the presence or absence of
that resource in the file system. This call is typically used when creating new directories
or files to generate ResourceIds for resources that may not yet exist.
| Modifier and Type | Method and Description |
|---|---|
ResourceId |
getCurrentDirectory()
Returns the
ResourceId that represents the current directory of this ResourceId. |
java.lang.String |
getFilename()
Returns the name of the file or directory denoted by this
ResourceId. |
java.lang.String |
getScheme()
Get the scheme which defines the namespace of the
ResourceId. |
boolean |
isDirectory()
Returns
true if this ResourceId represents a directory, false otherwise. |
ResourceId |
resolve(java.lang.String other,
ResolveOptions resolveOptions)
Returns a child
ResourceId under this. |
java.lang.String |
toString()
Returns the string representation of this
ResourceId. |
ResourceId resolve(java.lang.String other, ResolveOptions resolveOptions)
ResourceId under this.
In order to write file system agnostic code, callers should not include delimiters in other, and should use ResolveOptions.StandardResolveOptions to specify whether to resolve a file or a
directory.
For example:
ResourceId homeDir = ...;
ResourceId tempOutput = homeDir
.resolve("tempDir", StandardResolveOptions.RESOLVE_DIRECTORY)
.resolve("output", StandardResolveOptions.RESOLVE_FILE);
This ResourceId should represents a directory.
It is up to each file system to resolve in their own way.
Resolving special characters:
resourceId.resolve("..", StandardResolveOptions.RESOLVE_DIRECTORY) returns the
parent directory of this ResourceId.
resourceId.resolve("*", StandardResolveOptions.RESOLVE_FILE) returns a ResourceId which matches all files in this ResourceId.
resourceId.resolve("*", StandardResolveOptions.RESOLVE_DIRECTORY) returns a
ResourceId which matches all directories in this ResourceId.
java.lang.IllegalStateException - if this ResourceId is not a directory.java.lang.IllegalArgumentException - if other contains illegal characters or is an illegal
name. It is recommended that callers use common characters, such as [_a-zA-Z0-9.-],
in other.ResourceId getCurrentDirectory()
ResourceId that represents the current directory of this ResourceId.
If it is already a directory, trivially returns this.
java.lang.String getScheme()
ResourceId.
The scheme is required to follow URI scheme syntax. See RFC 2396
@Nullable java.lang.String getFilename()
ResourceId. The file name is
the farthest element from the root in the directory hierarchy.boolean isDirectory()
true if this ResourceId represents a directory, false otherwise.java.lang.String toString()
ResourceId.
The corresponding FileSystem.match(java.util.List<java.lang.String>) is required to accept this string representation.
toString in class java.lang.Object