@ParametersAreNonnullByDefault public interface FileSystemDriver extends Closeable
This is the interface you have to implement in order to provide the guts
of a FileSystem
implementation. Do not implement this class
directly: extend FileSystemDriverBase
instead, or UnixLikeFileSystemDriverBase
.
All methods dealing with I/O are implemented here and not in FileSystemProvider
; it also contains methods specifically used by FileSystem
.
Note: when entering methods in this class, it is guaranteed that all options are supported.
Modifier and Type | Method and Description |
---|---|
void |
checkAccess(Path path,
AccessMode... modes)
Check access modes for a path on this filesystem
|
void |
copy(Path source,
Path target,
Set<CopyOption> options)
Copy a file, or empty directory, from one path to another on this
filesystem
|
void |
createDirectory(Path dir,
FileAttribute<?>... attrs)
Create a new directory from a path on this filesystem
|
void |
delete(Path path)
Delete a file, or empty directory, matching a path on this filesystem
|
<V extends FileAttributeView> |
getFileAttributeView(Path path,
Class<V> type,
LinkOption... options)
Read an attribute view for a given path on this filesystem
|
FileStore |
getFileStore()
Get the
FileStore associated with this filesystem |
Object |
getPathMetadata(Path path) |
UserPrincipalLookupService |
getUserPrincipalLookupService()
Get a user/group lookup service for this filesystem
|
boolean |
isHidden(Path path)
Tell whether a path is to be considered hidden by this filesystem
|
boolean |
isSameFile(Path path,
Path path2)
Tell whether two paths actually refer to the same resource on this
filesystem
|
void |
move(Path source,
Path target,
Set<CopyOption> options)
Move a file, or empty directory, from one path to another on this
filesystem
|
SeekableByteChannel |
newByteChannel(Path path,
Set<? extends OpenOption> options,
FileAttribute<?>... attrs)
Obtain a new
SeekableByteChannel from a path for this filesystem |
DirectoryStream<Path> |
newDirectoryStream(Path dir,
DirectoryStream.Filter<? super Path> filter)
Create a new directory stream from a path for this filesystem
|
InputStream |
newInputStream(Path path,
Set<OpenOption> options)
Obtain a new
InputStream from a path for this filesystem |
OutputStream |
newOutputStream(Path path,
Set<OpenOption> options)
Obtain a new
OutputStream from a path for this filesystem |
WatchService |
newWatchService()
Get a file watch service for this filesystem
|
<A extends BasicFileAttributes> |
readAttributes(Path path,
Class<A> type,
LinkOption... options)
Read attributes from a path on this filesystem
|
Map<String,Object> |
readAttributes(Path path,
String attributes,
LinkOption... options)
Read a list of attributes from a path on this filesystem
|
void |
setAttribute(Path path,
String attribute,
Object value,
LinkOption... options)
Set an attribute for a path on this filesystem
|
@Nonnull FileStore getFileStore()
FileStore
associated with this filesystemFileStore
FileSystem.getFileStores()
,
FileStoreBase
@Nonnull UserPrincipalLookupService getUserPrincipalLookupService()
FileSystem.getUserPrincipalLookupService()
@Nonnull WatchService newWatchService()
FileSystem.newWatchService()
@Nonnull InputStream newInputStream(Path path, Set<OpenOption> options) throws IOException
InputStream
from a path for this filesystempath
- the pathoptions
- the set of open optionsIOException
- filesystem level error, or plain I/O errorFileSystemProvider.newInputStream(Path, OpenOption...)
@Nonnull OutputStream newOutputStream(Path path, Set<OpenOption> options) throws IOException
OutputStream
from a path for this filesystempath
- the pathoptions
- the set of open optionsIOException
- filesystem level error, or plain I/O errorFileSystemProvider.newOutputStream(Path, OpenOption...)
@Nonnull SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
SeekableByteChannel
from a path for this filesystem
Note that a SeekableByteChannel
supports both reads and
writes.
path
- the pathoptions
- the set of open optionsattrs
- the attributes to create the file with (if it does not
exist)IOException
- filesystem level error, or a plain I/O errorFileSystemProvider.newByteChannel(Path, Set, FileAttribute[])
@Nonnull DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
dir
- the directoryfilter
- a directory entry filterIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.newDirectoryStream(Path, DirectoryStream.Filter)
void createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
dir
- the directory to createattrs
- the attributes with which the directory should be createdIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.createDirectory(Path, FileAttribute[])
void delete(Path path) throws IOException
path
- the victimIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.delete(Path)
void copy(Path source, Path target, Set<CopyOption> options) throws IOException
source
- the source pathtarget
- the target pathoptions
- the copy optionsIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.copy(Path, Path, CopyOption...)
void move(Path source, Path target, Set<CopyOption> options) throws IOException
source
- the source pathtarget
- the target pathoptions
- the copy optionsIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.move(Path, Path, CopyOption...)
boolean isSameFile(Path path, Path path2) throws IOException
Note that this DOES NOT apply to symbolic links, if the filesystem
supports them; that is, if path
is a symlink to path2
,
they are not the same file. Also, in spite of the method name,
this method can be called on paths which are not regular files but
directories, symlinks or others.
Two paths which are equal
are always the
same.
path
- the first pathpath2
- the second pathIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.isSameFile(Path, Path)
boolean isHidden(Path path) throws IOException
Typically, on Unix systems, it means the last name element of the path
starts with a dot ("."
).
path
- the path to testIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.isHidden(Path)
void checkAccess(Path path, AccessMode... modes) throws IOException
If no modes are provided to check for, this simply checks for the existence of the path.
path
- the path to checkmodes
- the modes to check for, if anyIOException
- filesystem level error, or a plain I/O errorFileSystemProvider.checkAccess(Path, AccessMode...)
@Nullable <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options)
V
- type parameter of the attribute view classpath
- the path to read attributes fromtype
- the class of attribute view to returnoptions
- the link optionsnull
if this view is not supportedFileSystemProvider.getFileAttributeView(Path, Class, LinkOption...)
<A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException
A
- parameter type for the attributs classpath
- the path to read attributes fromtype
- the class of attributes to readoptions
- the link optionsIOException
- filesystem level error, or a plain I/O errorUnsupportedOperationException
- attribute type not supportedFileSystemProvider.readAttributes(Path, Class, LinkOption...)
Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
path
- the path to read attributes fromattributes
- the list of attributes to readoptions
- the link optionsIOException
- filesystem level error, or a plain I/O errorIllegalArgumentException
- malformed attributes string; or a
specified attribute does not existUnsupportedOperationException
- one or more attribute(s) is/are not
supportedFiles.readAttributes(Path, String, LinkOption...)
,
FileSystemProvider.readAttributes(Path, String, LinkOption...)
void setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
path
- the victimattribute
- the name of the attribute to setvalue
- the value to setoptions
- the link optionsIOException
- filesystem level error, or a plain I/O errorIllegalArgumentException
- malformed attribute, or the specified
attribute does not existUnsupportedOperationException
- the attribute to set is not
supported by this filesystemClassCastException
- attribute value is of the wrong class for the
specified attributeFiles.setAttribute(Path, String, Object, LinkOption...)
,
FileSystemProvider.setAttribute(Path, String, Object, LinkOption...)
@Nonnull Object getPathMetadata(Path path) throws IOException
IOException