Class FileSystemProvider
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.
- Since:
- 1.7
-
Constructor Summary
ModifierConstructorDescriptionprotected
Initializes a new instance of this class. -
Method Summary
Modifier and TypeMethodDescriptionabstract void
checkAccess
(Path path, AccessMode... modes) Checks the existence, and optionally the accessibility, of a file.abstract void
copy
(Path source, Path target, CopyOption... options) Copy a file to a target file.abstract void
createDirectory
(Path dir, FileAttribute<?>... attrs) Creates a new directory.void
createLink
(Path link, Path existing) Creates a new link (directory entry) for an existing file.void
createSymbolicLink
(Path link, Path target, FileAttribute<?>... attrs) Creates a symbolic link to a target.abstract void
Deletes a file.boolean
deleteIfExists
(Path path) Deletes a file if it exists.boolean
exists
(Path path, LinkOption... options) Tests whether a file exists.abstract <V extends FileAttributeView>
VgetFileAttributeView
(Path path, Class<V> type, LinkOption... options) Returns a file attribute view of a given type.abstract FileStore
getFileStore
(Path path) Returns theFileStore
representing the file store where a file is located.abstract FileSystem
getFileSystem
(URI uri) Returns an existingFileSystem
created by this provider.abstract Path
Return aPath
object by converting the givenURI
.abstract String
Returns the URI scheme that identifies this provider.static List
<FileSystemProvider> Returns a list of the installed file system providers.abstract boolean
Tells whether or not a file is considered hidden.abstract boolean
isSameFile
(Path path, Path path2) Tests if two paths locate the same file.abstract void
move
(Path source, Path target, CopyOption... options) Move or rename a file to a target file.newAsynchronousFileChannel
(Path path, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs) Opens or creates a file for reading and/or writing, returning an asynchronous file channel to access the file.abstract SeekableByteChannel
newByteChannel
(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) Opens or creates a file, returning a seekable byte channel to access the file.abstract DirectoryStream
<Path> newDirectoryStream
(Path dir, DirectoryStream.Filter<? super Path> filter) Opens a directory, returning aDirectoryStream
to iterate over the entries in the directory.newFileChannel
(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) Opens or creates a file for reading and/or writing, returning a file channel to access the file.abstract FileSystem
newFileSystem
(URI uri, Map<String, ?> env) Constructs a newFileSystem
object identified by a URI.newFileSystem
(Path path, Map<String, ?> env) Constructs a newFileSystem
to access the contents of a file as a file system.newInputStream
(Path path, OpenOption... options) Opens a file, returning an input stream to read from the file.newOutputStream
(Path path, OpenOption... options) Opens or creates a file, returning an output stream that may be used to write bytes to the file.abstract <A extends BasicFileAttributes>
AreadAttributes
(Path path, Class<A> type, LinkOption... options) Reads a file's attributes as a bulk operation.readAttributes
(Path path, String attributes, LinkOption... options) Reads a set of file attributes as a bulk operation.<A extends BasicFileAttributes>
AreadAttributesIfExists
(Path path, Class<A> type, LinkOption... options) Reads a file's attributes as a bulk operation if it exists.readSymbolicLink
(Path link) Reads the target of a symbolic link.abstract void
setAttribute
(Path path, String attribute, Object value, LinkOption... options) Sets the value of a file attribute.
-
Constructor Details
-
FileSystemProvider
protected FileSystemProvider()Initializes a new instance of this class.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.
-
-
Method Details
-
installedProviders
Returns a list of the installed file system providers.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.- Returns:
- An unmodifiable list of the installed file system providers. The list contains at least one element, that is the default file system provider
- Throws:
ServiceConfigurationError
- When an error occurs while loading a service provider
-
getScheme
Returns the URI scheme that identifies this provider.- Returns:
- The URI scheme
-
newFileSystem
Constructs a newFileSystem
object identified by a URI. This method is invoked by theFileSystems.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. Theenv
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 isclosed
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.- Parameters:
uri
- URI referenceenv
- A map of provider specific properties to configure the file system; may be empty- Returns:
- A new file system
- Throws:
IllegalArgumentException
- If the pre-conditions for theuri
parameter aren't met, or theenv
parameter does not contain properties required by the provider, or a property value is invalidIOException
- An I/O error occurs creating the file systemFileSystemAlreadyExistsException
- If the file system has already been created
-
getFileSystem
Returns an existingFileSystem
created by this provider.This method returns a reference to a
FileSystem
that was created by invoking thenewFileSystem(URI,Map)
method. File systems created thenewFileSystem(Path,Map)
method are not returned by this method. The file system is identified by itsURI
. 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 bynull
).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 throwsFileSystemNotFoundException
. 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 thenewFileSystem
method).- Parameters:
uri
- URI reference- Returns:
- The file system
- Throws:
IllegalArgumentException
- If the pre-conditions for theuri
parameter aren't metFileSystemNotFoundException
- If the file system does not exist
-
getPath
Return aPath
object by converting the givenURI
. The resultingPath
is associated with aFileSystem
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 resultingPath
is associated with the defaultdefault
FileSystem
.- Parameters:
uri
- The URI to convert- Returns:
- The resulting
Path
- Throws:
IllegalArgumentException
- If the URI scheme does not identify this provider or other preconditions on the uri parameter do not holdFileSystemNotFoundException
- The file system, identified by the URI, does not exist and cannot be created automatically
-
newFileSystem
Constructs a newFileSystem
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 throwsUnsupportedOperationException
.- Parameters:
path
- The path to the fileenv
- A map of provider specific properties to configure the file system; may be empty- Returns:
- A new file system
- Throws:
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 fileIllegalArgumentException
- If theenv
parameter does not contain properties required by the provider, or a property value is invalidIOException
- If an I/O error occurs
-
newInputStream
Opens a file, returning an input stream to read from the file. This method works in exactly the manner specified by theFiles.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.- Parameters:
path
- the path to the file to openoptions
- options specifying how the file is opened- Returns:
- a new input stream
- Throws:
IllegalArgumentException
- if an invalid combination of options is specifiedUnsupportedOperationException
- if an unsupported option is specifiedIOException
- if an I/O error occurs
-
newOutputStream
Opens or creates a file, returning an output stream that may be used to write bytes to the file. This method works in exactly the manner specified by theFiles.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.- Parameters:
path
- the path to the file to open or createoptions
- options specifying how the file is opened- Returns:
- a new output stream
- Throws:
IllegalArgumentException
- ifoptions
contains an invalid combination of optionsUnsupportedOperationException
- if an unsupported option is specifiedIOException
- if an I/O error occursFileAlreadyExistsException
- If a file of that name already exists and theCREATE_NEW
option is specified (optional specific exception)
-
newFileChannel
public FileChannel newFileChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException Opens or creates a file for reading and/or writing, returning a file channel to access the file. This method works in exactly the manner specified by theFileChannel.open
method. A provider that does not support all the features required to construct a file channel throwsUnsupportedOperationException
. The default provider is required to support the creation of file channels. When not overridden, the default implementation throwsUnsupportedOperationException
.- Parameters:
path
- the path of the file to open or createoptions
- options specifying how the file is openedattrs
- an optional list of file attributes to set atomically when creating the file- Returns:
- a new file channel
- Throws:
IllegalArgumentException
- If the set contains an invalid combination of optionsUnsupportedOperationException
- If this provider that does not support creating file channels, or an unsupported open option or file attribute is specifiedFileAlreadyExistsException
- If a file of that name already exists and theCREATE_NEW
option is specified and the file is being opened for writing (optional specific exception)IOException
- If an I/O error occurs
-
newAsynchronousFileChannel
public AsynchronousFileChannel newAsynchronousFileChannel(Path path, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs) throws IOException Opens or creates a file for reading and/or writing, returning an asynchronous file channel to access the file. This method works in exactly the manner specified by theAsynchronousFileChannel.open
method. A provider that does not support all the features required to construct an asynchronous file channel throwsUnsupportedOperationException
. The default provider is required to support the creation of asynchronous file channels. When not overridden, the default implementation of this method throwsUnsupportedOperationException
.- Parameters:
path
- the path of the file to open or createoptions
- options specifying how the file is openedexecutor
- the thread pool ornull
to associate the channel with the default thread poolattrs
- an optional list of file attributes to set atomically when creating the file- Returns:
- a new asynchronous file channel
- Throws:
IllegalArgumentException
- If the set contains an invalid combination of optionsUnsupportedOperationException
- If this provider that does not support creating asynchronous file channels, or an unsupported open option or file attribute is specifiedFileAlreadyExistsException
- If a file of that name already exists and theCREATE_NEW
option is specified and the file is being opened for writing (optional specific exception)IOException
- If an I/O error occurs
-
newByteChannel
public abstract SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException Opens or creates a file, returning a seekable byte channel to access the file. This method works in exactly the manner specified by theFiles.newByteChannel(Path,Set,FileAttribute[])
method.- Parameters:
path
- the path to the file to open or createoptions
- options specifying how the file is openedattrs
- an optional list of file attributes to set atomically when creating the file- Returns:
- a new seekable byte channel
- Throws:
IllegalArgumentException
- if the set contains an invalid combination of optionsUnsupportedOperationException
- if an unsupported open option is specified or the array contains attributes that cannot be set atomically when creating the fileFileAlreadyExistsException
- If a file of that name already exists and theCREATE_NEW
option is specified and the file is being opened for writing (optional specific exception)IOException
- if an I/O error occurs
-
newDirectoryStream
public abstract DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException Opens a directory, returning aDirectoryStream
to iterate over the entries in the directory. This method works in exactly the manner specified by theFiles.newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter)
method.- Parameters:
dir
- the path to the directoryfilter
- the directory stream filter- Returns:
- a new and open
DirectoryStream
object - Throws:
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
-
createDirectory
Creates a new directory. This method works in exactly the manner specified by theFiles.createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...)
method.- Parameters:
dir
- the directory to createattrs
- an optional list of file attributes to set atomically when creating the directory- Throws:
UnsupportedOperationException
- if the array contains an attribute that cannot be set atomically when creating the directoryFileAlreadyExistsException
- 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
-
createSymbolicLink
public void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException Creates a symbolic link to a target. This method works in exactly the manner specified by theFiles.createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...)
method.The default implementation of this method throws
UnsupportedOperationException
.- Parameters:
link
- the path of the symbolic link to createtarget
- the target of the symbolic linkattrs
- the array of attributes to set atomically when creating the symbolic link- Throws:
UnsupportedOperationException
- if the implementation does not support symbolic links or the array contains an attribute that cannot be set atomically when creating the symbolic linkFileAlreadyExistsException
- if a file with the name already exists (optional specific exception)IOException
- if an I/O error occurs
-
createLink
Creates a new link (directory entry) for an existing file. This method works in exactly the manner specified by theFiles.createLink(java.nio.file.Path, java.nio.file.Path)
method.The default implementation of this method throws
UnsupportedOperationException
.- Parameters:
link
- the link (directory entry) to createexisting
- a path to an existing file- Throws:
UnsupportedOperationException
- if the implementation does not support adding an existing file to a directoryFileAlreadyExistsException
- 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
-
delete
Deletes a file. This method works in exactly the manner specified by theFiles.delete(java.nio.file.Path)
method.- Parameters:
path
- the path to the file to delete- Throws:
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
-
deleteIfExists
Deletes a file if it exists. This method works in exactly the manner specified by theFiles.deleteIfExists(java.nio.file.Path)
method.The default implementation of this method simply invokes
delete(java.nio.file.Path)
ignoring theNoSuchFileException
when the file does not exist. It may be overridden where appropriate.- Parameters:
path
- the path to the file to delete- Returns:
true
if the file was deleted by this method;false
if the file could not be deleted because it did not exist- Throws:
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
-
readSymbolicLink
Reads the target of a symbolic link. This method works in exactly the manner specified by theFiles.readSymbolicLink(java.nio.file.Path)
method.The default implementation of this method throws
UnsupportedOperationException
.- Parameters:
link
- the path to the symbolic link- Returns:
- The target of the symbolic link
- Throws:
UnsupportedOperationException
- if the implementation does not support symbolic linksNotLinkException
- 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
-
copy
Copy a file to a target file. This method works in exactly the manner specified by theFiles.copy(Path,Path,CopyOption[])
method except that both the source and target paths must be associated with this provider.- Parameters:
source
- the path to the file to copytarget
- the path to the target fileoptions
- options specifying how the copy should be done- Throws:
UnsupportedOperationException
- if the array contains a copy option that is not supportedFileAlreadyExistsException
- if the target file exists but cannot be replaced because theREPLACE_EXISTING
option is not specified (optional specific exception)DirectoryNotEmptyException
- theREPLACE_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
-
move
Move or rename a file to a target file. This method works in exactly the manner specified by theFiles.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.- Parameters:
source
- the path to the file to movetarget
- the path to the target fileoptions
- options specifying how the move should be done- Throws:
UnsupportedOperationException
- if the array contains a copy option that is not supportedFileAlreadyExistsException
- if the target file exists but cannot be replaced because theREPLACE_EXISTING
option is not specified (optional specific exception)DirectoryNotEmptyException
- theREPLACE_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 theATOMIC_MOVE
option but the file cannot be moved as an atomic file system operation.IOException
- if an I/O error occurs
-
isSameFile
Tests if two paths locate the same file. This method works in exactly the manner specified by theFiles.isSameFile(java.nio.file.Path, java.nio.file.Path)
method.- Parameters:
path
- one path to the filepath2
- the other path- Returns:
true
if, and only if, the two paths locate the same file- Throws:
IOException
- if an I/O error occurs
-
isHidden
Tells whether or not a file is considered hidden. This method works in exactly the manner specified by theFiles.isHidden(java.nio.file.Path)
method.This method is invoked by the
isHidden
method.- Parameters:
path
- the path to the file to test- Returns:
true
if the file is considered hidden- Throws:
IOException
- if an I/O error occurs
-
getFileStore
Returns theFileStore
representing the file store where a file is located. This method works in exactly the manner specified by theFiles.getFileStore(java.nio.file.Path)
method.- Parameters:
path
- the path to the file- Returns:
- the file store where the file is stored
- Throws:
IOException
- if an I/O error occurs
-
checkAccess
Checks the existence, and optionally the accessibility, of a file.This method may be used by the
isReadable
,isWritable
andisExecutable
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 forEXECUTE
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.
- Parameters:
path
- the path to the file to checkmodes
- The access modes to check; may have zero elements- Throws:
UnsupportedOperationException
- an implementation is required to support checking forREAD
,WRITE
, andEXECUTE
access. This exception is specified to allow for theAccess
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
-
getFileAttributeView
public abstract <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options) Returns a file attribute view of a given type. This method works in exactly the manner specified by theFiles.getFileAttributeView(java.nio.file.Path, java.lang.Class<V>, java.nio.file.LinkOption...)
method.- Type Parameters:
V
- TheFileAttributeView
type- Parameters:
path
- the path to the filetype
- theClass
object corresponding to the file attribute viewoptions
- options indicating how symbolic links are handled- Returns:
- a file attribute view of the specified type, or
null
if the attribute view type is not available
-
readAttributes
public abstract <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException Reads a file's attributes as a bulk operation. This method works in exactly the manner specified by theFiles.readAttributes(Path,Class,LinkOption[])
method.- Type Parameters:
A
- TheBasicFileAttributes
type- Parameters:
path
- the path to the filetype
- theClass
of the file attributes required to readoptions
- options indicating how symbolic links are handled- Returns:
- the file attributes
- Throws:
UnsupportedOperationException
- if an attributes of the given type are not supportedIOException
- if an I/O error occurs
-
readAttributes
public abstract Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException Reads a set of file attributes as a bulk operation. This method works in exactly the manner specified by theFiles.readAttributes(Path,String,LinkOption[])
method.- Parameters:
path
- the path to the fileattributes
- the attributes to readoptions
- options indicating how symbolic links are handled- Returns:
- a map of the attributes returned; may be empty. The map's keys are the attribute names, its values are the attribute values
- Throws:
UnsupportedOperationException
- if the attribute view is not availableIllegalArgumentException
- if no attributes are specified or an unrecognized attributes is specifiedIOException
- If an I/O error occurs
-
setAttribute
public abstract void setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException Sets the value of a file attribute. This method works in exactly the manner specified by theFiles.setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption...)
method.- Parameters:
path
- the path to the fileattribute
- the attribute to setvalue
- the attribute valueoptions
- options indicating how symbolic links are handled- Throws:
UnsupportedOperationException
- if the attribute view is not availableIllegalArgumentException
- if the attribute name is not specified, or is not recognized, or the attribute value is of the correct type but has an inappropriate valueClassCastException
- If the attribute value is not of the expected type or is a collection containing elements that are not of the expected typeIOException
- If an I/O error occurs
-
exists
Tests whether a file exists. This method works in exactly the manner specified by theFiles.exists(Path, LinkOption...)
method.- Implementation Requirements:
- The default implementation of this method invokes the
checkAccess(Path, AccessMode...)
method when symbolic links are followed. If the optionNOFOLLOW_LINKS
is present then symbolic links are not followed and the methodreadAttributes(Path, Class, LinkOption...)
is called to determine whether a file exists. - Parameters:
path
- the path to the file to testoptions
- options indicating how symbolic links are handled- Returns:
true
if the file exists;false
if the file does not exist or its existence cannot be determined.- Since:
- 20
-
readAttributesIfExists
public <A extends BasicFileAttributes> A readAttributesIfExists(Path path, Class<A> type, LinkOption... options) throws IOException Reads a file's attributes as a bulk operation if it exists.The
type
parameter is the type of the attributes required and this method returns an instance of that type if supported. All implementations support a basic set of file attributes and so invoking this method with atype
parameter ofBasicFileAttributes.class
will not throwUnsupportedOperationException
.The
options
array may be used to indicate how symbolic links are handled for the case that the file is a symbolic link. By default, symbolic links are followed and the file attribute of the final target of the link is read. If the optionNOFOLLOW_LINKS
is present then symbolic links are not followed.It is implementation specific if all file attributes are read as an atomic operation with respect to other file system operations.
- Implementation Requirements:
- The default implementation of this method invokes the
readAttributes(Path, Class, LinkOption...)
method to read the file's attributes. - Type Parameters:
A
- TheBasicFileAttributes
type- Parameters:
path
- the path to the filetype
- theClass
of the file attributes required to readoptions
- options indicating how symbolic links are handled- Returns:
- the file attributes or null if the file does not exist
- Throws:
UnsupportedOperationException
- if an attributes of the given type are not supportedIOException
- if an I/O error occurs- Since:
- 20
-