public abstract class FileSystemProvider extends Object
Files class will typically delegate to an instance of this class.
A file system provider is a concrete implementation of this class that implements the abstract methods defined by this class. A provider is identified by a URI scheme. The default provider is identified by the URI scheme "file". It creates the FileSystem that provides access to the file systems accessible to the Java virtual machine. The FileSystems class defines how file system providers are located and loaded. The default provider is typically a system-default provider but may be overridden if the system property java.nio.file.spi.DefaultFileSystemProvider is set. In that case, the provider has a one argument constructor whose formal parameter type is FileSystemProvider. All other providers have a zero argument constructor that initializes the provider.
A provider is a factory for one or more FileSystem instances. Each file system is identified by a URI where the URI's scheme matches the provider's scheme. The default file system, for example, is identified by the URI "file:///". A memory-based file system, for example, may be identified by a URI such as "memory:///?name=logfs". The newFileSystem method may be used to create a file system, and the getFileSystem method may be used to obtain a reference to an existing file system created by the provider. Where a provider is the factory for a single file system then it is provider dependent if the file system is created when the provider is initialized, or later when the newFileSystem method is invoked. In the case of the default provider, the FileSystem is created when the provider is initialized.
All of the methods in this class are safe for use by multiple concurrent threads.
| Modifier | Constructor and Description |
|---|---|
protected |
FileSystemProvider()
Initializes a new instance of this class.
|
| Modifier and Type | Method and Description |
|---|---|
abstract void |
checkAccess(Path
Checks the existence, and optionally the accessibility, of a file.
|
abstract void |
copy(Path
Copy a file to a target file.
|
abstract void |
createDirectory(Path
Creates a new directory.
|
void |
createLink(Path
Creates a new link (directory entry) for an existing file.
|
void |
createSymbolicLink(Path
Creates a symbolic link to a target.
|
abstract void |
delete(Path
Deletes a file.
|
boolean |
deleteIfExists(Path
Deletes a file if it exists.
|
abstract <V extends FileAttributeView |
getFileAttributeView(Path
Returns a file attribute view of a given type.
|
abstract FileStore |
getFileStore(Path
Returns the
FileStore representing the file store where a file is located.
|
abstract FileSystem |
getFileSystem(URI
Returns an existing
FileSystem created by this provider.
|
abstract Path |
getPath(URI
Return a
Path object by converting the given
URI.
|
abstract String |
getScheme()
Returns the URI scheme that identifies this provider.
|
static List |
installedProviders()
Returns a list of the installed file system providers.
|
abstract boolean |
isHidden(Path
Tells whether or not a file is considered
hidden.
|
abstract boolean |
isSameFile(Path
Tests if two paths locate the same file.
|
abstract void |
move(Path
Move or rename a file to a target file.
|
AsynchronousFileChannel |
newAsynchronousFileChannel(Path
Opens or creates a file for reading and/or writing, returning an asynchronous file channel to access the file.
|
abstract SeekableByteChannel |
newByteChannel(Path
Opens or creates a file, returning a seekable byte channel to access the file.
|
abstract DirectoryStream |
newDirectoryStream(Path
Opens a directory, returning a
DirectoryStream to iterate over the entries in the directory.
|
FileChannel |
newFileChannel(Path
Opens or creates a file for reading and/or writing, returning a file channel to access the file.
|
FileSystem |
newFileSystem(Path
Constructs a new
FileSystem to access the contents of a file as a file system.
|
abstract FileSystem |
newFileSystem(URI
Constructs a new
FileSystem object identified by a URI.
|
InputStream |
newInputStream(Path
Opens a file, returning an input stream to read from the file.
|
OutputStream |
newOutputStream(Path
Opens or creates a file, returning an output stream that may be used to write bytes to the file.
|
abstract <A extends BasicFileAttributes |
readAttributes(Path
Reads a file's attributes as a bulk operation.
|
abstract Map |
readAttributes(Path
Reads a set of file attributes as a bulk operation.
|
Path |
readSymbolicLink(Path
Reads the target of a symbolic link.
|
abstract void |
setAttribute(Path
Sets the value of a file attribute.
|
protected FileSystemProvider()
During construction a provider may safely access files associated with the default provider but care needs to be taken to avoid circular loading of other installed providers. If circular loading of installed providers is detected then an unspecified error is thrown.
SecurityException - If a security manager has been installed and it denies
RuntimePermission
("fileSystemProvider")
public static List<FileSystemProvider > installedProviders()
The first invocation of this method causes the default provider to be initialized (if not already initialized) and loads any other installed providers as described by the FileSystems class.
ServiceConfigurationError - When an error occurs while loading a service provider
public abstract StringgetScheme()
public abstract FileSystemnewFileSystem(URI uri, Map <String ,?> env) throws IOException
FileSystem object identified by a URI. This method is invoked by the
FileSystems.newFileSystem(URI,Map) method to open a new file system identified by a URI.
The uri parameter is an absolute, hierarchical URI, with a scheme equal (without regard to case) to the scheme supported by this provider. The exact form of the URI is highly provider dependent. The env parameter is a map of provider specific properties to configure the file system.
This method throws FileSystemAlreadyExistsException if the file system already exists because it was previously created by an invocation of this method. Once a file system is closed it is provider-dependent if the provider allows a new file system to be created with the same URI as a file system it previously created.
uri - URI reference
env - A map of provider specific properties to configure the file system; may be empty
IllegalArgumentException - If the pre-conditions for the
uri parameter aren't met, or the
env parameter does not contain properties required by the provider, or a property value is invalid
IOException - An I/O error occurs creating the file system
SecurityException - If a security manager is installed and it denies an unspecified permission required by the file system provider implementation
FileSystemAlreadyExistsException - If the file system has already been created
public abstract FileSystemgetFileSystem(URI uri)
FileSystem created by this provider.
This method returns a reference to a FileSystem that was created by invoking the newFileSystem(URI,Map) method. File systems created the newFileSystem(Path,Map) method are not returned by this method. The file system is identified by its URI. Its exact form is highly provider dependent. In the case of the default provider the URI's path component is "/" and the authority, query and fragment components are undefined (Undefined components are represented by null).
Once a file system created by this provider is closed it is provider-dependent if this method returns a reference to the closed file system or throws FileSystemNotFoundException. If the provider allows a new file system to be created with the same URI as a file system it previously created then this method throws the exception if invoked after the file system is closed (and before a new instance is created by the newFileSystem method).
If a security manager is installed then a provider implementation may require to check a permission before returning a reference to an existing file system. In the case of the default file system, no permission check is required.
uri - URI reference
IllegalArgumentException - If the pre-conditions for the
uri parameter aren't met
FileSystemNotFoundException - If the file system does not exist
SecurityException - If a security manager is installed and it denies an unspecified permission.
public abstract PathgetPath(URI uri)
Path object by converting the given
URI. The resulting
Path is associated with a
FileSystem that already exists or is constructed automatically.
The exact form of the URI is file system provider dependent. In the case of the default provider, the URI scheme is "file" and the given URI has a non-empty path component, and undefined query, and fragment components. The resulting Path is associated with the default default FileSystem.
If a security manager is installed then a provider implementation may require to check a permission. In the case of the default file system, no permission check is required.
uri - The URI to convert
Path
IllegalArgumentException - If the URI scheme does not identify this provider or other preconditions on the uri parameter do not hold
FileSystemNotFoundException - The file system, identified by the URI, does not exist and cannot be created automatically
SecurityException - If a security manager is installed and it denies an unspecified permission.
public FileSystemnewFileSystem(Path path, Map <String ,?> env) throws IOException
FileSystem to access the contents of a file as a file system.
This method is intended for specialized providers of pseudo file systems where the contents of one or more files is treated as a file system. The env parameter is a map of provider specific properties to configure the file system.
If this provider does not support the creation of such file systems or if the provider does not recognize the file type of the given file then it throws UnsupportedOperationException. The default implementation of this method throws UnsupportedOperationException.
path - The path to the file
env - A map of provider specific properties to configure the file system; may be empty
UnsupportedOperationException - If this provider does not support access to the contents as a file system or it does not recognize the file type of the given file
IllegalArgumentException - If the
env parameter does not contain properties required by the provider, or a property value is invalid
IOException - If an I/O error occurs
SecurityException - If a security manager is installed and it denies an unspecified permission.
public InputStreamnewInputStream(Path path, OpenOption ... options) throws IOException
Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) method.
The default implementation of this method opens a channel to the file as if by invoking the newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) method and constructs a stream that reads bytes from the channel. This method should be overridden where appropriate.
path - the path to the file to open
options - options specifying how the file is opened
IllegalArgumentException - if an invalid combination of options is specified
UnsupportedOperationException - if an unsupported option is specified
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the file.
public OutputStreamnewOutputStream(Path path, OpenOption ... options) throws IOException
Files.newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) method.
The default implementation of this method opens a channel to the file as if by invoking the newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) method and constructs a stream that writes bytes to the channel. This method should be overridden where appropriate.
path - the path to the file to open or create
options - options specifying how the file is opened
IllegalArgumentException - if
options contains an invalid combination of options
UnsupportedOperationException - if an unsupported option is specified
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkWrite method is invoked to check write access to the file. The
checkDelete method is invoked to check delete access if the file is opened with the
DELETE_ON_CLOSE option.
public FileChannelnewFileChannel(Path path, Set <? extends OpenOption > options, FileAttribute <?>... attrs) throws IOException
FileChannel.open method. A provider that does not support all the features required to construct a file channel throws
UnsupportedOperationException. The default provider is required to support the creation of file channels. When not overridden, the default implementation throws
UnsupportedOperationException.
path - the path of the file to open or create
options - options specifying how the file is opened
attrs - an optional list of file attributes to set atomically when creating the file
IllegalArgumentException - If the set contains an invalid combination of options
UnsupportedOperationException - If this provider that does not support creating file channels, or an unsupported open option or file attribute is specified
IOException - If an I/O error occurs
SecurityException - In the case of the default file system, the
SecurityManager.checkRead(String) method is invoked to check read access if the file is opened for reading. The
SecurityManager.checkWrite(String) method is invoked to check write access if the file is opened for writing
public AsynchronousFileChannelnewAsynchronousFileChannel(Path path, Set <? extends OpenOption > options, ExecutorService executor, FileAttribute <?>... attrs) throws IOException
AsynchronousFileChannel.open method. A provider that does not support all the features required to construct an asynchronous file channel throws
UnsupportedOperationException. The default provider is required to support the creation of asynchronous file channels. When not overridden, the default implementation of this method throws
UnsupportedOperationException.
path - the path of the file to open or create
options - options specifying how the file is opened
executor - the thread pool or
null to associate the channel with the default thread pool
attrs - an optional list of file attributes to set atomically when creating the file
IllegalArgumentException - If the set contains an invalid combination of options
UnsupportedOperationException - If this provider that does not support creating asynchronous file channels, or an unsupported open option or file attribute is specified
IOException - If an I/O error occurs
SecurityException - In the case of the default file system, the
SecurityManager.checkRead(String) method is invoked to check read access if the file is opened for reading. The
SecurityManager.checkWrite(String) method is invoked to check write access if the file is opened for writing
public abstract SeekableByteChannelnewByteChannel(Path path, Set <? extends OpenOption > options, FileAttribute <?>... attrs) throws IOException
Files.newByteChannel(Path,Set,FileAttribute[]) method.
path - the path to the file to open or create
options - options specifying how the file is opened
attrs - an optional list of file attributes to set atomically when creating the file
IllegalArgumentException - if the set contains an invalid combination of options
UnsupportedOperationException - if an unsupported open option is specified or the array contains attributes that cannot be set atomically when creating the file
FileAlreadyExistsException - if a file of that name already exists and the
CREATE_NEW option is specified
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the path if the file is opened for reading. The
checkWrite method is invoked to check write access to the path if the file is opened for writing. The
checkDelete method is invoked to check delete access if the file is opened with the
DELETE_ON_CLOSE option.
public abstract DirectoryStream<Path > newDirectoryStream(Path dir, DirectoryStream .Filter <? super Path > filter) throws IOException
DirectoryStream to iterate over the entries in the directory. This method works in exactly the manner specified by the
Files.newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter) method.
dir - the path to the directory
filter - the directory stream filter
DirectoryStream object
NotDirectoryException - if the file could not otherwise be opened because it is not a directory
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the directory.
public abstract void createDirectory(Pathdir, FileAttribute <?>... attrs) throws IOException
Files.createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) method.
dir - the directory to create
attrs - an optional list of file attributes to set atomically when creating the directory
UnsupportedOperationException - if the array contains an attribute that cannot be set atomically when creating the directory
FileAlreadyExistsException - if a directory could not otherwise be created because a file of that name already exists
(optional specific exception)
IOException - if an I/O error occurs or the parent directory does not exist
SecurityException - In the case of the default provider, and a security manager is installed, the
checkWrite method is invoked to check write access to the new directory.
public void createSymbolicLink(Pathlink, Path target, FileAttribute <?>... attrs) throws IOException
Files.createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) method.
The default implementation of this method throws UnsupportedOperationException.
link - the path of the symbolic link to create
target - the target of the symbolic link
attrs - the array of attributes to set atomically when creating the symbolic link
UnsupportedOperationException - if the implementation does not support symbolic links or the array contains an attribute that cannot be set atomically when creating the symbolic link
FileAlreadyExistsException - if a file with the name already exists
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, it denies
LinkPermission
("symbolic") or its
checkWrite method denies write access to the path of the symbolic link.
public void createLink(Pathlink, Path existing) throws IOException
Files.createLink(java.nio.file.Path, java.nio.file.Path) method.
The default implementation of this method throws UnsupportedOperationException.
link - the link (directory entry) to create
existing - a path to an existing file
UnsupportedOperationException - if the implementation does not support adding an existing file to a directory
FileAlreadyExistsException - if the entry could not otherwise be created because a file of that name already exists
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, it denies
LinkPermission
("hard") or its
checkWrite method denies write access to either the link or the existing file.
public abstract void delete(Pathpath) throws IOException
Files.delete(java.nio.file.Path) method.
path - the path to the file to delete
NoSuchFileException - if the file does not exist
(optional specific exception)
DirectoryNotEmptyException - if the file is a directory and could not otherwise be deleted because the directory is not empty
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
SecurityManager.checkDelete(String) method is invoked to check delete access to the file
public boolean deleteIfExists(Pathpath) throws IOException
Files.deleteIfExists(java.nio.file.Path) method.
The default implementation of this method simply invokes delete(java.nio.file.Path) ignoring the NoSuchFileException when the file does not exist. It may be overridden where appropriate.
path - the path to the file to delete
true if the file was deleted by this method;
false if the file could not be deleted because it did not exist
DirectoryNotEmptyException - if the file is a directory and could not otherwise be deleted because the directory is not empty
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
SecurityManager.checkDelete(String) method is invoked to check delete access to the file
public PathreadSymbolicLink(Path link) throws IOException
Files.readSymbolicLink(java.nio.file.Path) method.
The default implementation of this method throws UnsupportedOperationException.
link - the path to the symbolic link
UnsupportedOperationException - if the implementation does not support symbolic links
NotLinkException - if the target could otherwise not be read because the file is not a symbolic link
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, it checks that
FilePermission has been granted with the "
readlink" action to read the link.
public abstract void copy(Pathsource, Path target, CopyOption ... options) throws IOException
Files.copy(Path,Path,CopyOption[]) method except that both the source and target paths must be associated with this provider.
source - the path to the file to copy
target - the path to the target file
options - options specifying how the copy should be done
UnsupportedOperationException - if the array contains a copy option that is not supported
FileAlreadyExistsException - if the target file exists but cannot be replaced because the
REPLACE_EXISTING option is not specified
(optional specific exception)
DirectoryNotEmptyException - the
REPLACE_EXISTING option is specified but the file cannot be replaced because it is a non-empty directory
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the source file, the
checkWrite is invoked to check write access to the target file. If a symbolic link is copied the security manager is invoked to check
LinkPermission
("symbolic").
public abstract void move(Pathsource, Path target, CopyOption ... options) throws IOException
Files.move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) method except that both the source and target paths must be associated with this provider.
source - the path to the file to move
target - the path to the target file
options - options specifying how the move should be done
UnsupportedOperationException - if the array contains a copy option that is not supported
FileAlreadyExistsException - if the target file exists but cannot be replaced because the
REPLACE_EXISTING option is not specified
(optional specific exception)
DirectoryNotEmptyException - the
REPLACE_EXISTING option is specified but the file cannot be replaced because it is a non-empty directory
(optional specific exception)
AtomicMoveNotSupportedException - if the options array contains the
ATOMIC_MOVE option but the file cannot be moved as an atomic file system operation.
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkWrite method is invoked to check write access to both the source and target file.
public abstract boolean isSameFile(Pathpath, Path path2) throws IOException
Files.isSameFile(java.nio.file.Path, java.nio.file.Path) method.
path - one path to the file
path2 - the other path
true if, and only if, the two paths locate the same file
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to both files.
public abstract boolean isHidden(Pathpath) throws IOException
Files.isHidden(java.nio.file.Path) method.
This method is invoked by the isHidden method.
path - the path to the file to test
true if the file is considered hidden
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the file.
public abstract FileStoregetFileStore(Path path) throws IOException
FileStore representing the file store where a file is located. This method works in exactly the manner specified by the
Files.getFileStore(java.nio.file.Path) method.
path - the path to the file
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead method is invoked to check read access to the file, and in addition it checks
RuntimePermission
("getFileStoreAttributes")
public abstract void checkAccess(Pathpath, AccessMode ... modes) throws IOException
This method may be used by the isReadable, isWritable and isExecutable methods to check the accessibility of a file.
This method checks the existence of a file and that this Java virtual machine has appropriate privileges that would allow it access the file according to all of access modes specified in the modes parameter as follows:
| Value | Description |
|---|---|
READ |
Checks that the file exists and that the Java virtual machine has permission to read the file. |
WRITE |
Checks that the file exists and that the Java virtual machine has permission to write to the file, |
EXECUTE |
Checks that the file exists and that the Java virtual machine has permission to execute the file. The semantics may differ when checking access to a directory. For example, on UNIX systems, checking for EXECUTE access checks that the Java virtual machine has permission to search the directory in order to access file or subdirectories. |
If the modes parameter is of length zero, then the existence of the file is checked.
This method follows symbolic links if the file referenced by this object is a symbolic link. Depending on the implementation, this method may require to read file permissions, access control lists, or other file attributes in order to check the effective access to the file. To determine the effective access to a file may require access to several attributes and so in some implementations this method may not be atomic with respect to other file system operations.
path - the path to the file to check
modes - The access modes to check; may have zero elements
UnsupportedOperationException - an implementation is required to support checking for
READ,
WRITE, and
EXECUTE access. This exception is specified to allow for the
Access enum to be extended in future releases.
NoSuchFileException - if a file does not exist
(optional specific exception)
AccessDeniedException - the requested access would be denied or the access cannot be determined because the Java virtual machine has insufficient privileges or other reasons.
(optional specific exception)
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, the
checkRead is invoked when checking read access to the file or only the existence of the file, the
checkWrite is invoked when checking write access to the file, and
checkExec is invoked when checking execute access.
public abstract <V extends FileAttributeView> V getFileAttributeView(Path path, Class <V> type, LinkOption ... options)
Files.getFileAttributeView(java.nio.file.Path, java.lang.Class<V>, java.nio.file.LinkOption...) method.
V - The
FileAttributeView type
path - the path to the file
type - the
Class object corresponding to the file attribute view
options - options indicating how symbolic links are handled
null if the attribute view type is not available
public abstract <A extends BasicFileAttributes> A readAttributes(Path path, Class <A> type, LinkOption ... options) throws IOException
Files.readAttributes(Path,Class,LinkOption[]) method.
A - The
BasicFileAttributes type
path - the path to the file
type - the
Class of the file attributes required to read
options - options indicating how symbolic links are handled
UnsupportedOperationException - if an attributes of the given type are not supported
IOException - if an I/O error occurs
SecurityException - In the case of the default provider, a security manager is installed, its
checkRead method is invoked to check read access to the file
public abstract Map<String ,Object > readAttributes(Path path, String attributes, LinkOption ... options) throws IOException
Files.readAttributes(Path,String,LinkOption[]) method.
path - the path to the file
attributes - the attributes to read
options - options indicating how symbolic links are handled
UnsupportedOperationException - if the attribute view is not available
IllegalArgumentException - if no attributes are specified or an unrecognized attributes is specified
IOException - If an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, its
checkRead method denies read access to the file. If this method is invoked to read security sensitive attributes then the security manager may be invoke to check for additional permissions.
public abstract void setAttribute(Pathpath, String attribute, Object value, LinkOption ... options) throws IOException
Files.setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption...) method.
path - the path to the file
attribute - the attribute to set
value - the attribute value
options - options indicating how symbolic links are handled
UnsupportedOperationException - if the attribute view is not available
IllegalArgumentException - if the attribute name is not specified, or is not recognized, or the attribute value is of the correct type but has an inappropriate value
ClassCastException - If the attribute value is not of the expected type or is a collection containing elements that are not of the expected type
IOException - If an I/O error occurs
SecurityException - In the case of the default provider, and a security manager is installed, its
checkWrite method denies write access to the file. If this method is invoked to set security sensitive attributes then the security manager may be invoked to check for additional permissions.