Files
类定义的方法通常会委托给此类的一个实例。
文件系统提供者是此类的具体实现,它实现了此类定义的抽象方法。提供商由 URI
scheme
标识。默认提供程序由 URI 方案“文件”标识。它创建 FileSystem
提供对 Java 虚拟机可访问的文件系统的访问。 FileSystems
类定义了文件系统提供程序的定位和加载方式。默认提供程序通常是系统默认提供程序,但如果设置了系统属性 java.nio.file.spi.DefaultFileSystemProvider
则可能会被覆盖。在这种情况下,提供者有一个单参数构造函数,其形式参数类型为 FileSystemProvider
。所有其他提供者都有一个零参数构造函数来初始化提供者。
提供者是一个或多个 FileSystem
实例的工厂。每个文件系统都由 URI
标识,其中 URI 的方案与提供者的 scheme
匹配。例如,默认文件系统由 URI "file:///"
标识。例如,基于内存的文件系统可以由诸如 "memory:///?name=logfs"
的 URI 标识。 newFileSystem
方法可用于创建文件系统,getFileSystem
方法可用于获取对提供程序创建的现有文件系统的引用。如果提供程序是单个文件系统的工厂,那么如果文件系统是在初始化提供程序时创建的,或者稍后在调用 newFileSystem
方法时创建的,则它依赖于提供程序。对于默认提供程序,FileSystem
是在初始化提供程序时创建的。
此类中的所有方法都可以安全地供多个并发线程使用。
- 自从:
- 1.7
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract void
checkAccess
(Path path, AccessMode... modes) 检查文件是否存在,并可选地检查文件的可访问性。abstract void
copy
(Path source, Path target, CopyOption... options) 将文件复制到目标文件。abstract void
createDirectory
(Path dir, FileAttribute<?>... attrs) 创建一个新目录。void
createLink
(Path link, Path existing) 为现有文件创建新链接(目录条目)。void
createSymbolicLink
(Path link, Path target, FileAttribute<?>... attrs) 创建指向目标的符号链接。abstract void
删除文件。boolean
deleteIfExists
(Path path) 删除文件(如果存在)。boolean
exists
(Path path, LinkOption... options) 测试文件是否存在。abstract <V extends FileAttributeView>
VgetFileAttributeView
(Path path, Class<V> type, LinkOption... options) 返回给定类型的文件属性视图。abstract FileStore
getFileStore
(Path path) 返回代表文件所在文件存储的FileStore
。abstract FileSystem
getFileSystem
(URI uri) 返回由该提供商创建的现有FileSystem
。abstract Path
通过转换给定的URI
返回一个Path
对象。abstract String
返回标识此提供程序的 URI 方案。static List<FileSystemProvider>
返回已安装文件系统提供程序的列表。abstract boolean
告知文件是否被视为 hidden 。abstract boolean
isSameFile
(Path path, Path path2) 测试两个路径是否找到同一个文件。abstract void
move
(Path source, Path target, CopyOption... options) 将文件移动或重命名为目标文件。newAsynchronousFileChannel
(Path path, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs) 打开或创建用于读取和/或写入的文件,返回异步文件通道以访问该文件。abstract SeekableByteChannel
newByteChannel
(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) 打开或创建一个文件,返回一个可搜索的字节通道来访问该文件。abstract DirectoryStream<Path>
newDirectoryStream
(Path dir, DirectoryStream.Filter<? super Path> filter) 打开一个目录,返回一个DirectoryStream
以迭代目录中的条目。newFileChannel
(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) 打开或创建用于读取和/或写入的文件,返回文件通道以访问该文件。abstract FileSystem
newFileSystem
(URI uri, Map<String, ?> env) 构造一个由 URI 标识的新FileSystem
对象。newFileSystem
(Path path, Map<String, ?> env) 构造一个新的FileSystem
来访问文件的内容作为文件系统。newInputStream
(Path path, OpenOption... options) 打开一个文件,返回一个输入流以从文件中读取。newOutputStream
(Path path, OpenOption... options) 打开或创建文件,返回可用于将字节写入文件的输出流。abstract <A extends BasicFileAttributes>
AreadAttributes
(Path path, Class<A> type, LinkOption... options) 作为批量操作读取文件的属性。readAttributes
(Path path, String attributes, LinkOption... options) 读取一组文件属性作为批量操作。<A extends BasicFileAttributes>
AreadAttributesIfExists
(Path path, Class<A> type, LinkOption... options) 如果文件存在,则将文件的属性作为批量操作读取。readSymbolicLink
(Path link) 读取符号链接的目标。abstract void
setAttribute
(Path path, String attribute, Object value, LinkOption... options) 设置文件属性的值。
-
构造方法详细信息
-
FileSystemProvider
protected FileSystemProvider()初始化此类的新实例。在构造期间,提供者可以安全地访问与默认提供者关联的文件,但需要注意避免循环加载其他已安装的提供者。如果检测到已安装提供程序的循环加载,则会抛出一个未指定的错误。
- 抛出:
SecurityException
- 如果安装了安全管理器并且它拒绝RuntimePermission
("fileSystemProvider")
-
-
方法详情
-
installedProviders
返回已安装文件系统提供程序的列表。第一次调用此方法会导致初始化默认提供程序(如果尚未初始化)并加载任何其他已安装的提供程序,如
FileSystems
类所述。- 返回:
- 已安装文件系统提供程序的不可修改列表。该列表至少包含一个元素,即默认文件系统提供者
- 抛出:
ServiceConfigurationError
- 加载服务提供商时发生错误
-
getScheme
返回标识此提供程序的 URI 方案。- 返回:
- URI 方案
-
newFileSystem
构造一个由 URI 标识的新FileSystem
对象。此方法由FileSystems.newFileSystem(URI,Map)
方法调用以打开由 URI 标识的新文件系统。uri
参数是一个绝对的分层 URI,其方案与此提供程序支持的方案相同(不考虑大小写)。 URI 的确切形式高度依赖于提供者。env
参数是用于配置文件系统的提供程序特定属性的映射。如果文件系统已经存在,则此方法抛出
FileSystemAlreadyExistsException
,因为它之前是通过调用此方法创建的。一旦文件系统是closed
,如果提供者允许使用与其先前创建的文件系统相同的 URI 创建新文件系统,则它依赖于提供者。- 参数:
uri
- URI 参考env
- 用于配置文件系统的提供程序特定属性的映射;可能是空的- 返回:
- 一个新的文件系统
- 抛出:
IllegalArgumentException
- 如果不满足uri
参数的先决条件,或者env
参数不包含提供商所需的属性,或者属性值无效IOException
- 创建文件系统时发生 I/O 错误SecurityException
- 如果安装了安全管理器并且它拒绝文件系统提供程序实现所需的未指定权限FileSystemAlreadyExistsException
- 如果文件系统已经创建
-
getFileSystem
返回由该提供商创建的现有FileSystem
。此方法返回对通过调用
newFileSystem(URI,Map)
方法创建的FileSystem
的引用。此方法不返回使用newFileSystem(Path,Map)
方法创建的文件系统。文件系统由其URI
标识。它的确切形式高度依赖于提供者。在默认提供者的情况下,URI 的路径组件是"/"
并且权限、查询和片段组件未定义(未定义的组件由null
表示)。一旦此提供程序创建的文件系统是
closed
,如果此方法返回对已关闭文件系统的引用或抛出FileSystemNotFoundException
,则它依赖于提供程序。如果提供者允许使用与之前创建的文件系统相同的 URI 创建新的文件系统,那么如果在文件系统关闭之后(并且在newFileSystem
方法创建新实例之前)调用此方法,则会抛出异常。如果安装了安全管理器,则提供者实现可能需要在返回对现有文件系统的引用之前检查权限。在
default
文件系统的情况下,不需要权限检查。- 参数:
uri
- URI 参考- 返回:
- 文件系统
- 抛出:
IllegalArgumentException
- 如果不满足uri
参数的先决条件FileSystemNotFoundException
- 如果文件系统不存在SecurityException
- 如果安装了安全管理器并且它拒绝未指定的权限。
-
getPath
通过转换给定的URI
返回一个Path
对象。生成的Path
与已存在或自动构造的FileSystem
相关联。URI 的确切形式取决于文件系统提供程序。在默认提供程序的情况下,URI 方案是
"file"
并且给定的 URI 具有非空路径组件、未定义的查询和片段组件。生成的Path
与默认值default
FileSystem
相关联。如果安装了安全管理器,则提供者实现可能需要检查权限。在
default
文件系统的情况下,不需要权限检查。- 参数:
uri
- 要转换的 URI- 返回:
-
结果
Path
- 抛出:
IllegalArgumentException
- 如果 URI 方案未识别此提供者或 uri 参数的其他先决条件不成立FileSystemNotFoundException
- 由 URI 标识的文件系统不存在且无法自动创建SecurityException
- 如果安装了安全管理器并且它拒绝未指定的权限。
-
newFileSystem
构造一个新的FileSystem
来访问文件的内容作为文件系统。此方法适用于伪文件系统的专门提供者,其中一个或多个文件的内容被视为一个文件系统。
env
参数是用于配置文件系统的提供程序特定属性的映射。如果此提供程序不支持创建此类文件系统,或者如果提供程序无法识别给定文件的文件类型,则它会抛出
UnsupportedOperationException
。此方法的默认实现抛出UnsupportedOperationException
。- 参数:
path
- 文件路径env
- 用于配置文件系统的提供程序特定属性的映射;可能是空的- 返回:
- 一个新的文件系统
- 抛出:
UnsupportedOperationException
- 如果此提供程序不支持将内容作为文件系统进行访问,或者它无法识别给定文件的文件类型IllegalArgumentException
- 如果env
参数不包含提供程序所需的属性,或者属性值无效IOException
- 如果发生 I/O 错误SecurityException
- 如果安装了安全管理器并且它拒绝未指定的权限。
-
newInputStream
打开一个文件,返回一个输入流以从文件中读取。此方法的工作方式与Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption...)
方法指定的方式完全相同。此方法的默认实现打开文件的通道,就像调用
newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...)
方法一样,并构造一个从通道读取字节的流。应在适当的地方覆盖此方法。- 参数:
path
- 要打开的文件的路径options
- 指定文件打开方式的选项- 返回:
- 一个新的输入流
- 抛出:
IllegalArgumentException
- 如果指定了无效的选项组合UnsupportedOperationException
- 如果指定了不支持的选项IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,将调用checkRead
方法来检查对文件的读取访问权限。
-
newOutputStream
打开或创建文件,返回可用于将字节写入文件的输出流。此方法的工作方式与Files.newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...)
方法指定的方式完全相同。此方法的默认实现打开文件的通道,就像通过调用
newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...)
方法一样,并构造一个将字节写入通道的流。应在适当的地方覆盖此方法。- 参数:
path
- 要打开或创建的文件的路径options
- 指定文件打开方式的选项- 返回:
- 一个新的输出流
- 抛出:
IllegalArgumentException
- 如果options
包含无效的选项组合UnsupportedOperationException
- 如果指定了不支持的选项IOException
- 如果发生 I/O 错误FileAlreadyExistsException
- 如果该名称的文件已经存在并且指定了CREATE_NEW
选项(可选的特定例外)SecurityException
- 在默认提供程序的情况下,安装了安全管理器,将调用checkWrite
方法来检查对文件的写访问权限。如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。
-
newFileChannel
public FileChannel newFileChannel(Path path, Set <? extends OpenOption > options, FileAttribute <?>... attrs) throws IOException 打开或创建用于读取和/或写入的文件,返回文件通道以访问该文件。此方法的工作方式与FileChannel.open
方法指定的方式完全相同。不支持构建文件通道所需的所有功能的提供程序会抛出UnsupportedOperationException
。默认提供程序需要支持文件通道的创建。未被覆盖时,默认实现抛出UnsupportedOperationException
。- 参数:
path
- 要打开或创建的文件的路径options
- 指定文件打开方式的选项attrs
- 创建文件时自动设置的可选文件属性列表- 返回:
- 一个新的文件通道
- 抛出:
IllegalArgumentException
- 如果集合包含无效的选项组合UnsupportedOperationException
- 如果此提供程序不支持创建文件通道,或者指定了不支持的打开选项或文件属性FileAlreadyExistsException
- 如果该名称的文件已经存在并且指定了CREATE_NEW
选项并且正在打开文件进行写入(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认文件系统的情况下,如果打开文件进行读取,则调用SecurityManager.checkRead(String)
方法来检查读取访问权限。如果打开文件进行写入,则调用SecurityManager.checkWrite(String)
方法来检查写入访问
-
newAsynchronousFileChannel
public AsynchronousFileChannel newAsynchronousFileChannel(Path path, Set <? extends OpenOption > options, ExecutorService executor, FileAttribute <?>... attrs) throws IOException 打开或创建用于读取和/或写入的文件,返回异步文件通道以访问该文件。此方法的工作方式与AsynchronousFileChannel.open
方法指定的方式完全相同。不支持构建异步文件通道所需的所有功能的提供程序会抛出UnsupportedOperationException
。默认提供程序需要支持异步文件通道的创建。当未被覆盖时,此方法的默认实现抛出UnsupportedOperationException
。- 参数:
path
- 要打开或创建的文件的路径options
- 指定文件打开方式的选项executor
- 线程池或null
将通道与默认线程池相关联attrs
- 创建文件时自动设置的可选文件属性列表- 返回:
- 一个新的异步文件通道
- 抛出:
IllegalArgumentException
- 如果集合包含无效的选项组合UnsupportedOperationException
- 如果此提供程序不支持创建异步文件通道,或者指定了不支持的打开选项或文件属性FileAlreadyExistsException
- 如果该名称的文件已经存在并且指定了CREATE_NEW
选项并且正在打开文件进行写入(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认文件系统的情况下,如果打开文件进行读取,则调用SecurityManager.checkRead(String)
方法来检查读取访问权限。如果打开文件进行写入,则调用SecurityManager.checkWrite(String)
方法来检查写入访问
-
newByteChannel
public abstract SeekableByteChannel newByteChannel(Path path, Set <? extends OpenOption > options, FileAttribute <?>... attrs) throws IOException 打开或创建一个文件,返回一个可搜索的字节通道来访问该文件。此方法的工作方式与Files.newByteChannel(Path,Set,FileAttribute[])
方法指定的方式完全相同。- 参数:
path
- 要打开或创建的文件的路径options
- 指定文件打开方式的选项attrs
- 创建文件时自动设置的可选文件属性列表- 返回:
- 一个新的可搜索字节通道
- 抛出:
IllegalArgumentException
- 如果集合包含无效的选项组合UnsupportedOperationException
- 如果指定了不支持的打开选项或数组包含在创建文件时无法自动设置的属性FileAlreadyExistsException
- 如果该名称的文件已经存在并且指定了CREATE_NEW
选项并且正在打开文件进行写入(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,如果打开文件进行读取,则调用checkRead
方法来检查对路径的读取访问。如果打开文件进行写入,将调用checkWrite
方法来检查对路径的写入访问。如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。
-
newDirectoryStream
public abstract DirectoryStream <Path > newDirectoryStream(Path dir, DirectoryStream.Filter <? super Path > filter) throws IOException 打开一个目录,返回一个DirectoryStream
以迭代目录中的条目。此方法的工作方式与Files.newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter)
方法指定的方式完全相同。- 参数:
dir
- 目录路径filter
- 目录流过滤器- 返回:
-
一个新的打开的
DirectoryStream
对象 - 抛出:
NotDirectoryException
- 如果文件因为不是目录而无法打开(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,将调用checkRead
方法来检查对目录的读取访问权限。
-
createDirectory
创建一个新目录。此方法的工作方式与Files.createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...)
方法指定的方式完全相同。- 参数:
dir
- 要创建的目录attrs
- 创建目录时要自动设置的可选文件属性列表- 抛出:
UnsupportedOperationException
- 如果数组包含在创建目录时无法自动设置的属性FileAlreadyExistsException
- 如果因为同名文件已经存在而无法创建目录(可选的特定例外)IOException
- 如果发生 I/O 错误或父目录不存在SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,将调用checkWrite
方法来检查对新目录的写访问权限。
-
createSymbolicLink
public void createSymbolicLink(Path link, Path target, FileAttribute <?>... attrs) throws IOException 创建指向目标的符号链接。此方法的工作方式与Files.createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...)
方法指定的方式完全相同。此方法的默认实现抛出
UnsupportedOperationException
。- 参数:
link
- 要创建的符号链接的路径target
- 符号链接的目标attrs
- 创建符号链接时要自动设置的属性数组- 抛出:
UnsupportedOperationException
- 如果实现不支持符号链接或数组包含在创建符号链接时无法自动设置的属性FileAlreadyExistsException
- 如果同名文件已经存在(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,它拒绝LinkPermission
("symbolic")
或其checkWrite
方法拒绝对符号链接路径的写访问。
-
createLink
为现有文件创建新链接(目录条目)。此方法的工作方式与Files.createLink(java.nio.file.Path, java.nio.file.Path)
方法指定的方式完全相同。此方法的默认实现抛出
UnsupportedOperationException
。- 参数:
link
- 要创建的链接(目录条目)existing
- 现有文件的路径- 抛出:
UnsupportedOperationException
- 如果实现不支持将现有文件添加到目录FileAlreadyExistsException
- 如果由于同名文件已存在而无法创建该条目(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,它拒绝LinkPermission
("hard")
或其checkWrite
方法拒绝对链接或现有文件的写访问。
-
delete
删除文件。此方法的工作方式与Files.delete(java.nio.file.Path)
方法指定的方式完全相同。- 参数:
path
- 要删除的文件的路径- 抛出:
NoSuchFileException
- 如果文件不存在(可选的特定例外)DirectoryNotEmptyException
- 如果文件是目录并且因为目录不为空而无法删除(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用SecurityManager.checkDelete(String)
方法来检查对文件的删除访问
-
deleteIfExists
删除文件(如果存在)。此方法的工作方式与Files.deleteIfExists(java.nio.file.Path)
方法指定的方式完全相同。当文件不存在时,此方法的默认实现只是调用
delete(java.nio.file.Path)
并忽略NoSuchFileException
。它可以在适当的地方被覆盖。- 参数:
path
- 要删除的文件的路径- 返回:
true
如果文件是通过这种方法删除的;false
如果文件因为不存在而无法删除- 抛出:
DirectoryNotEmptyException
- 如果文件是目录并且因为目录不为空而无法删除(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用SecurityManager.checkDelete(String)
方法来检查对文件的删除访问
-
readSymbolicLink
读取符号链接的目标。此方法的工作方式与Files.readSymbolicLink(java.nio.file.Path)
方法指定的方式完全相同。此方法的默认实现抛出
UnsupportedOperationException
。- 参数:
link
- 符号链接的路径- 返回:
- 符号链接的目标
- 抛出:
UnsupportedOperationException
- 如果实现不支持符号链接NotLinkException
- 如果由于文件不是符号链接而无法读取目标(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 如果是默认提供程序,并且安装了安全管理器,它会检查FilePermission
是否已被授予“readlink
”操作以读取链接。
-
copy
将文件复制到目标文件。此方法的工作方式与Files.copy(Path,Path,CopyOption[])
方法指定的方式完全相同,只是源路径和目标路径都必须与此提供程序相关联。- 参数:
source
- 要复制的文件的路径target
- 目标文件的路径options
- 指定如何完成复制的选项- 抛出:
UnsupportedOperationException
- 如果数组包含不支持的复制选项FileAlreadyExistsException
- 如果目标文件存在但由于未指定REPLACE_EXISTING
选项而无法替换(可选的特定例外)DirectoryNotEmptyException
- 指定了REPLACE_EXISTING
选项但无法替换该文件,因为它是一个非空目录(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用checkRead
方法来检查对源文件的读取访问,调用checkWrite
来检查对目标文件的写入访问。如果复制了符号链接,则调用安全管理器来检查LinkPermission
("symbolic")
。
-
move
将文件移动或重命名为目标文件。此方法的工作方式与Files.move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...)
方法指定的方式完全相同,只是源路径和目标路径都必须与此提供程序相关联。- 参数:
source
- 要移动的文件的路径target
- 目标文件的路径options
- 指定移动方式的选项- 抛出:
UnsupportedOperationException
- 如果数组包含不支持的复制选项FileAlreadyExistsException
- 如果目标文件存在但由于未指定REPLACE_EXISTING
选项而无法替换(可选的特定例外)DirectoryNotEmptyException
- 指定了REPLACE_EXISTING
选项但无法替换该文件,因为它是一个非空目录(可选的特定例外)AtomicMoveNotSupportedException
- 如果选项数组包含ATOMIC_MOVE
选项但文件不能作为原子文件系统操作移动。IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,将调用checkWrite
方法来检查对源文件和目标文件的写访问权限。
-
isSameFile
测试两个路径是否找到同一个文件。此方法的工作方式与Files.isSameFile(java.nio.file.Path, java.nio.file.Path)
方法指定的方式完全相同。- 参数:
path
- 文件的一个路径path2
- 另一条路- 返回:
true
当且仅当这两个路径找到同一个文件- 抛出:
IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,将调用checkRead
方法来检查对这两个文件的读取访问权限。
-
isHidden
告知文件是否被视为 hidden 。此方法的工作方式与Files.isHidden(java.nio.file.Path)
方法指定的方式完全相同。此方法由
isHidden
方法调用。- 参数:
path
- 要测试的文件的路径- 返回:
true
如果文件被认为是隐藏的- 抛出:
IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,将调用checkRead
方法来检查对文件的读取访问权限。
-
getFileStore
返回代表文件所在文件存储的FileStore
。此方法的工作方式与Files.getFileStore(java.nio.file.Path)
方法指定的方式完全相同。- 参数:
path
- 文件路径- 返回:
- 存储文件的文件存储
- 抛出:
IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用checkRead
方法来检查对文件的读取访问,此外它还检查RuntimePermission
("getFileStoreAttributes")
-
checkAccess
检查文件是否存在,并可选地检查文件的可访问性。isReadable
、isWritable
和isExecutable
方法可以使用此方法来检查文件的可访问性。此方法检查文件是否存在以及此 Java 虚拟机是否具有适当的权限,允许它根据
modes
参数中指定的所有访问模式访问该文件,如下所示:Value Description READ
检查文件是否存在以及 Java 虚拟机是否有权读取该文件。 WRITE
检查文件是否存在以及 Java 虚拟机是否有权写入文件, EXECUTE
检查该文件是否存在以及 Java 虚拟机是否具有 execute
该文件的权限。检查对目录的访问时,语义可能不同。例如,在 UNIX 系统上,检查EXECUTE
访问权限检查 Java 虚拟机是否有权搜索目录以访问文件或子目录。如果
modes
参数的长度为零,则检查文件是否存在。如果此对象引用的文件是符号链接,则此方法遵循符号链接。根据实现的不同,此方法可能需要读取文件权限、访问控制列表或其他文件属性,以检查对文件的有效访问。要确定对文件的有效访问可能需要访问多个属性,因此在某些实现中,此方法对于其他文件系统操作可能不是原子的。
- 参数:
path
- 要检查的文件的路径modes
- 要检查的访问模式;可能有零个元素- 抛出:
UnsupportedOperationException
- 需要一个实现来支持检查READ
、WRITE
和EXECUTE
访问。指定此异常是为了允许在未来的版本中扩展Access
枚举。NoSuchFileException
- 如果文件不存在(可选的特定例外)AccessDeniedException
- 由于Java虚拟机权限不足或其他原因,请求的访问将被拒绝或无法确定访问。(可选的特定例外)IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,在检查对文件的读访问权限或仅存在文件时调用checkRead
,在检查对文件的写访问权限时调用checkWrite
,以及checkExec
在检查执行访问时调用。
-
getFileAttributeView
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...)
方法指定的方式完全相同。- 类型参数:
V
-FileAttributeView
类型- 参数:
path
- 文件路径type
- 文件属性视图对应的Class
对象options
- 指示如何处理符号链接的选项- 返回:
-
指定类型的文件属性视图,如果属性视图类型不可用,则返回
null
-
readAttributes
public abstract <A extends BasicFileAttributes > A readAttributes(Path path, Class <A> type, LinkOption ... options) throws IOException 作为批量操作读取文件的属性。此方法的工作方式与Files.readAttributes(Path,Class,LinkOption[])
方法指定的方式完全相同。- 类型参数:
A
-BasicFileAttributes
类型- 参数:
path
- 文件路径type
- 需要读取的文件属性的Class
options
- 指示如何处理符号链接的选项- 返回:
- 文件属性
- 抛出:
UnsupportedOperationException
- 如果不支持给定类型的属性IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用其checkRead
方法来检查对文件的读取访问
-
readAttributes
public abstract Map <String ,Object > readAttributes(Path path, String attributes, LinkOption ... options) throws IOException 读取一组文件属性作为批量操作。此方法的工作方式与Files.readAttributes(Path,String,LinkOption[])
方法指定的方式完全相同。- 参数:
path
- 文件路径attributes
- 要读取的属性options
- 指示如何处理符号链接的选项- 返回:
- 返回的属性映射;可能是空的。map的键是属性名称,它的值是属性值
- 抛出:
UnsupportedOperationException
- 如果属性视图不可用IllegalArgumentException
- 如果未指定属性或指定了无法识别的属性IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,其checkRead
方法拒绝对该文件的读取访问。如果调用此方法来读取安全敏感属性,则可能会调用安全管理器来检查其他权限。
-
setAttribute
public abstract void setAttribute(Path path, String attribute, Object value, LinkOption ... options) throws IOException 设置文件属性的值。此方法的工作方式与Files.setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption...)
方法指定的方式完全相同。- 参数:
path
- 文件路径attribute
- 要设置的属性value
- 属性值options
- 指示如何处理符号链接的选项- 抛出:
UnsupportedOperationException
- 如果属性视图不可用IllegalArgumentException
- 如果未指定属性名称,或无法识别,或属性值类型正确但值不合适ClassCastException
- 如果属性值不是预期类型,或者是包含非预期类型元素的集合IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,并且安装了安全管理器,其checkWrite
方法拒绝对文件的写访问。如果调用此方法来设置安全敏感属性,则可能会调用安全管理器来检查其他权限。
-
exists
测试文件是否存在。此方法的工作方式与Files.exists(Path, LinkOption...)
方法指定的方式完全相同。- 实现要求:
-
当遵循符号链接时,此方法的默认实现调用
checkAccess(Path, AccessMode...)
方法。如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接并调用方法readAttributes(Path, Class, LinkOption...)
以确定文件是否存在。 - 参数:
path
- 要测试的文件的路径options
- 指示如何处理符号链接的选项- 返回:
true
如果文件存在;false
如果文件不存在或无法确定其存在。- 抛出:
SecurityException
- 在默认提供程序的情况下,将调用SecurityManager.checkRead(String)
来检查对文件的读取访问权限。- 自从:
- 20
-
readAttributesIfExists
public <A extends BasicFileAttributes > A readAttributesIfExists(Path path, Class <A> type, LinkOption ... options) throws IOException 如果文件存在,则将文件的属性作为批量操作读取。type
参数是所需属性的类型,如果支持,此方法将返回该类型的实例。所有实现都支持一组基本的文件属性,因此使用BasicFileAttributes.class
的type
参数调用此方法不会抛出UnsupportedOperationException
。options
数组可用于指示在文件是符号链接的情况下如何处理符号链接。默认情况下,遵循符号链接并读取链接最终目标的文件属性。如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。如果所有文件属性都作为相对于其他文件系统操作的原子操作读取,则它是特定于实现的。
- 实现要求:
-
此方法的默认实现调用
readAttributes(Path, Class, LinkOption...)
方法来读取文件的属性。 - 类型参数:
A
-BasicFileAttributes
类型- 参数:
path
- 文件路径type
- 需要读取的文件属性的Class
options
- 指示如何处理符号链接的选项- 返回:
- 文件属性,如果文件不存在则为 null
- 抛出:
UnsupportedOperationException
- 如果不支持给定类型的属性IOException
- 如果发生 I/O 错误SecurityException
- 在默认提供程序的情况下,安装了安全管理器,调用其checkRead
方法来检查对文件的读取访问权限。如果调用此方法来读取安全敏感属性,则可能会调用安全管理器来检查其他权限。- 自从:
- 20
-