Files
类定义的方法通常会委托给此类的实例。
文件系统提供者是实现此类定义的抽象方法的具体实现。提供者由 URI
scheme
标识。默认提供者由 URI 方案 "file" 标识。它创建提供对Java虚拟机可访问的文件系统的 FileSystem
。 FileSystems
类定义了如何定位和加载文件系统提供者。默认提供者通常是系统默认提供者,但如果设置了系统属性 java.nio.file.spi.DefaultFileSystemProvider
,则可以覆盖。在这种情况下,提供者具有一个参数的构造函数,其形式参数类型为 FileSystemProvider
。所有其他提供者都有一个零参数构造函数,用于初始化提供者。
提供者是一个或多个 FileSystem
实例的工厂。每个文件系统由一个 URI
标识,其中 URI 的方案与提供者的 scheme
匹配。例如,默认文件系统由 URI "file:///"
标识。例如,基于内存的文件系统可以由诸如 "memory:///?name=logfs"
的 URI 标识。可以使用 newFileSystem
方法创建文件系统,并可以使用 getFileSystem
方法获取由提供者创建的现有文件系统的引用。如果提供者是单个文件系统的工厂,则在初始化提供者时创建文件系统或稍后在调用 newFileSystem
方法时创建文件系统取决于提供者。在默认提供者的情况下,当初始化提供者时会创建 FileSystem
。
此类中的所有方法都可以安全地供多个并发线程使用。
- 自从:
- 1.7
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract 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
告诉文件是否被视为“隐藏”。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) 设置文件属性的值。
-
Constructor Details
-
FileSystemProvider
protected FileSystemProvider()初始化此类的新实例。在构造期间,提供者可以安全地访问与默认提供者关联的文件,但需要注意避免循环加载其他已安装的提供者。如果检测到已安装的提供者的循环加载,则会抛出未指定的错误。
- 抛出:
-
SecurityException
- 如果已安装安全管理器并且拒绝了RuntimePermission
("fileSystemProvider")
-
-
Method Details
-
installedProviders
返回已安装的文件系统提供者的列表。此方法的第一次调用会导致默认提供者被初始化(如果尚未初始化),并加载任何其他已安装的提供者,如
FileSystems
类所述。- 返回:
- 已安装的文件系统提供者的不可修改列表。列表至少包含一个元素,即默认文件系统提供者
- 抛出:
-
ServiceConfigurationError
- 当加载服务提供程序时发生错误时
-
getScheme
返回标识此提供者的 URI 方案。- 返回:
- URI 方案
-
newFileSystem
构造由 URI 标识的新FileSystem
对象。此方法由FileSystems.newFileSystem(URI,Map)
方法调用,以打开由 URI 标识的新文件系统。uri
参数是绝对的分层 URI,其方案(不区分大小写)等于此提供者支持的方案。URI 的确切形式高度依赖于提供者。env
参数是一个提供者特定属性的映射,用于配置文件系统。如果文件系统已经存在(因为之前通过调用此方法创建),则此方法会抛出
FileSystemAlreadyExistsException
。一旦文件系统被关闭
,则由提供者允许使用相同 URI 创建新文件系统是提供者相关的。- 参数:
-
uri
- URI 引用 -
env
- 用于配置文件系统的提供者特定属性的映射;可能为空 - 返回:
- 新文件系统
- 抛出:
-
IllegalArgumentException
- 如果未满足uri
参数的前提条件,或者env
参数不包含提供者所需的属性,或者属性值无效 -
IOException
- 创建文件系统时发生 I/O 错误 -
SecurityException
- 如果安装了安全管理器并且拒绝了文件系统提供程序实现所需的未指定权限 -
FileSystemAlreadyExistsException
- 如果文件系统已经创建
-
getFileSystem
返回此提供者创建的现有FileSystem
。此方法返回通过调用
newFileSystem(URI,Map)
方法创建的FileSystem
的引用。通过newFileSystem(Path,Map)
方法创建的文件系统不会被此方法返回。文件系统由其URI
标识。其确切形式高度依赖于提供者。在默认提供者的情况下,URI 的路径组件为"/"
,并且权限、查询和片段组件未定义(未定义的组件由null
表示)。一旦由此提供者创建的文件系统被
关闭
,则由提供者允许此方法返回对已关闭文件系统的引用或抛出FileSystemNotFoundException
是提供者相关的。如果提供者允许使用与其先前创建的文件系统相同的 URI 创建新文件系统,则在关闭文件系统后(并在newFileSystem
方法创建新实例之前)调用此方法会抛出异常。如果安装了安全管理器,则提供者实现可能需要在返回对现有文件系统的引用之前检查权限。对于
默认
文件系统,不需要进行权限检查。- 参数:
-
uri
- URI引用 - 返回:
- 文件系统
- 抛出:
-
IllegalArgumentException
- 如果未满足uri
参数的前提条件 -
FileSystemNotFoundException
- 如果文件系统不存在 -
SecurityException
- 如果安装了安全管理器并且拒绝了未指定的权限
-
getPath
通过转换给定的URI
来返回一个Path
对象。生成的Path
与已经存在或自动构建的FileSystem
相关联。URI的确切形式取决于文件系统提供程序。对于默认提供程序,URI方案是
"file"
,给定的URI具有非空路径组件,未定义的查询和片段组件。生成的Path
与默认default
FileSystem
相关联。如果安装了安全管理器,则提供程序实现可能需要检查权限。对于默认文件系统,不需要进行权限检查。
- 参数:
-
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)
方法指定的方式完全相同。此方法的默认实现仅在文件不存在时忽略
NoSuchFileException
而调用delete(java.nio.file.Path)
。可以根据需要进行覆盖。- 参数:
-
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
判断文件是否被视为隐藏。此方法的工作方式与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
参数中指定的所有访问模式访问文件,如下所示:值 描述 READ
检查文件是否存在,以及Java虚拟机是否有权限读取文件。 WRITE
检查文件是否存在,以及Java虚拟机是否有权限写入文件。 EXECUTE
检查文件是否存在,以及Java虚拟机是否有权限 执行
文件。在检查对目录的访问权限时,语义可能有所不同。例如,在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
- 指示如何处理符号链接的选项 - 返回:
- 返回的属性映射;可能为空。映射的键是属性名称,其值是属性值
- 抛出:
-
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
-