Module java.base

Class FileSystemProvider

java.lang.Object
java.nio.file.spi.FileSystemProvider

public abstract class FileSystemProvider extends Object
文件系统的服务提供者类。 Files 类定义的方法通常会委托给此类的实例。

文件系统提供者是实现此类定义的抽象方法的具体实现。提供者由 URI scheme 标识。默认提供者由 URI 方案 "file" 标识。它创建提供对Java虚拟机可访问的文件系统的 FileSystemFileSystems 类定义了如何定位和加载文件系统提供者。默认提供者通常是系统默认提供者,但如果设置了系统属性 java.nio.file.spi.DefaultFileSystemProvider,则可以覆盖。在这种情况下,提供者具有一个参数的构造函数,其形式参数类型为 FileSystemProvider。所有其他提供者都有一个零参数构造函数,用于初始化提供者。

提供者是一个或多个 FileSystem 实例的工厂。每个文件系统由一个 URI 标识,其中 URI 的方案与提供者的 scheme 匹配。例如,默认文件系统由 URI "file:///" 标识。例如,基于内存的文件系统可以由诸如 "memory:///?name=logfs" 的 URI 标识。可以使用 newFileSystem 方法创建文件系统,并可以使用 getFileSystem 方法获取由提供者创建的现有文件系统的引用。如果提供者是单个文件系统的工厂,则在初始化提供者时创建文件系统或稍后在调用 newFileSystem 方法时创建文件系统取决于提供者。在默认提供者的情况下,当初始化提供者时会创建 FileSystem

此类中的所有方法都可以安全地供多个并发线程使用。

自从:
1.7
  • Constructor Details

    • FileSystemProvider

      protected FileSystemProvider()
      初始化此类的新实例。

      在构造期间,提供者可以安全地访问与默认提供者关联的文件,但需要注意避免循环加载其他已安装的提供者。如果检测到已安装的提供者的循环加载,则会抛出未指定的错误。

      抛出:
      SecurityException - 如果已安装安全管理器并且拒绝了 RuntimePermission("fileSystemProvider")
  • Method Details

    • installedProviders

      public static List<FileSystemProvider> installedProviders()
      返回已安装的文件系统提供者的列表。

      此方法的第一次调用会导致默认提供者被初始化(如果尚未初始化),并加载任何其他已安装的提供者,如 FileSystems 类所述。

      返回:
      已安装的文件系统提供者的不可修改列表。列表至少包含一个元素,即默认文件系统提供者
      抛出:
      ServiceConfigurationError - 当加载服务提供程序时发生错误时
    • getScheme

      public abstract String getScheme()
      返回标识此提供者的 URI 方案。
      返回:
      URI 方案
    • newFileSystem

      public abstract FileSystem newFileSystem(URI uri, Map<String,?> env) throws IOException
      构造由 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

      public abstract FileSystem getFileSystem(URI uri)
      返回此提供者创建的现有 FileSystem

      此方法返回通过调用 newFileSystem(URI,Map) 方法创建的 FileSystem 的引用。通过 newFileSystem(Path,Map) 方法创建的文件系统不会被此方法返回。文件系统由其 URI 标识。其确切形式高度依赖于提供者。在默认提供者的情况下,URI 的路径组件为 "/",并且权限、查询和片段组件未定义(未定义的组件由 null 表示)。

      一旦由此提供者创建的文件系统被 关闭,则由提供者允许此方法返回对已关闭文件系统的引用或抛出 FileSystemNotFoundException 是提供者相关的。如果提供者允许使用与其先前创建的文件系统相同的 URI 创建新文件系统,则在关闭文件系统后(并在 newFileSystem 方法创建新实例之前)调用此方法会抛出异常。

      如果安装了安全管理器,则提供者实现可能需要在返回对现有文件系统的引用之前检查权限。对于 默认 文件系统,不需要进行权限检查。

      参数:
      uri - URI引用
      返回:
      文件系统
      抛出:
      IllegalArgumentException - 如果未满足uri参数的前提条件
      FileSystemNotFoundException - 如果文件系统不存在
      SecurityException - 如果安装了安全管理器并且拒绝了未指定的权限
    • getPath

      public abstract Path getPath(URI uri)
      通过转换给定的URI来返回一个Path对象。生成的Path与已经存在或自动构建的FileSystem相关联。

      URI的确切形式取决于文件系统提供程序。对于默认提供程序,URI方案是"file",给定的URI具有非空路径组件,未定义的查询和片段组件。生成的Path与默认default FileSystem相关联。

      如果安装了安全管理器,则提供程序实现可能需要检查权限。对于默认文件系统,不需要进行权限检查。

      参数:
      uri - 要转换的URI
      返回:
      生成的Path
      抛出:
      IllegalArgumentException - 如果URI方案未标识此提供程序或uri参数的其他前提条件不成立
      FileSystemNotFoundException - 由URI标识的文件系统不存在且无法自动创建
      SecurityException - 如果安装了安全管理器并且拒绝了未指定的权限
    • newFileSystem

      public FileSystem newFileSystem(Path path, Map<String,?> env) throws IOException
      构造一个新的FileSystem以访问文件的内容作为文件系统。

      此方法适用于伪文件系统的专业提供程序,其中一个或多个文件的内容被视为文件系统。 env参数是用于配置文件系统的提供程序特定属性的映射。

      如果此提供程序不支持创建此类文件系统,或者如果提供程序不识别给定文件的文件类型,则会抛出UnsupportedOperationException。此方法的默认实现会抛出UnsupportedOperationException

      参数:
      path - 文件的路径
      env - 用于配置文件系统的提供程序特定属性的映射;可能为空
      返回:
      一个新的文件系统
      抛出:
      UnsupportedOperationException - 如果此提供程序不支持将内容作为文件系统访问,或者它不识别给定文件的文件类型
      IllegalArgumentException - 如果env参数不包含提供程序所需的属性,或属性值无效
      IOException - 如果发生I/O错误
      SecurityException - 如果安装了安全管理器并且拒绝了未指定的权限
    • newInputStream

      public InputStream newInputStream(Path path, OpenOption... options) throws IOException
      打开一个文件,返回一个输入流以从文件中读取。此方法的工作方式与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

      public OutputStream newOutputStream(Path path, OpenOption... options) throws IOException
      打开或创建一个文件,返回一个输出流,可用于向文件写入字节。此方法的工作方式与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

      public abstract void createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
      创建一个新目录。此方法的工作方式与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

      public void createLink(Path link, Path existing) throws IOException
      为现有文件创建新链接(目录条目)。此方法的工作方式与Files.createLink(java.nio.file.Path, java.nio.file.Path)方法指定的方式完全相同。

      此方法的默认实现会抛出UnsupportedOperationException

      参数:
      link - 要创建的链接(目录条目)
      existing - 指向现有文件的路径
      抛出:
      UnsupportedOperationException - 如果实现不支持将现有文件添加到目录
      FileAlreadyExistsException - 如果由于同名文件已存在而无法创建条目 (可选特定异常)
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,它会拒绝LinkPermission("hard")或其checkWrite方法拒绝对链接或现有文件的写访问。
    • delete

      public abstract void delete(Path path) throws IOException
      删除文件。此方法的工作方式与Files.delete(java.nio.file.Path)方法指定的方式完全相同。
      参数:
      path - 要删除的文件的路径
      抛出:
      NoSuchFileException - 如果文件不存在 (可选特定异常)
      DirectoryNotEmptyException - 如果文件是目录且由于目录不为空而无法删除 (可选特定异常)
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,将调用SecurityManager.checkDelete(String)方法来检查对文件的删除访问权限
    • deleteIfExists

      public boolean deleteIfExists(Path path) throws IOException
      如果存在则删除文件。此方法的工作方式与Files.deleteIfExists(java.nio.file.Path)方法指定的方式完全相同。

      此方法的默认实现仅在文件不存在时忽略NoSuchFileException而调用delete(java.nio.file.Path)。可以根据需要进行覆盖。

      参数:
      path - 要删除的文件的路径
      返回:
      如果此方法删除了文件,则true; 如果文件因不存在而无法删除,则false
      抛出:
      DirectoryNotEmptyException - 如果文件是目录且由于目录不为空而无法删除 (可选特定异常)
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,将调用SecurityManager.checkDelete(String)方法来检查对文件的删除访问权限
    • readSymbolicLink

      public Path readSymbolicLink(Path link) throws IOException
      读取符号链接的目标。此方法的工作方式与Files.readSymbolicLink(java.nio.file.Path)方法指定的方式完全相同。

      此方法的默认实现会抛出UnsupportedOperationException

      参数:
      link - 符号链接的路径
      返回:
      符号链接的目标
      抛出:
      UnsupportedOperationException - 如果实现不支持符号链接
      NotLinkException - 如果由于文件不是符号链接而无法读取目标 (可选特定异常)
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,它会检查是否已授予FilePermission具有"readlink"操作的权限以读取链接。
    • copy

      public abstract void copy(Path source, Path target, CopyOption... options) throws IOException
      将文件复制到目标文件。此方法的工作方式与Files.copy(Path,Path,CopyOption[])方法指定的方式完全相同,只是源路径和目标路径都必须与此提供程序关联。
      参数:
      source - 要复制的文件的路径
      target - 目标文件的路径
      options - 指定如何执行复制的选项
      抛出:
      UnsupportedOperationException - 如果数组包含不受支持的复制选项
      FileAlreadyExistsException - 如果目标文件存在但无法替换,因为未指定REPLACE_EXISTING选项 (可选特定异常)
      DirectoryNotEmptyException - 如果指定了REPLACE_EXISTING选项但无法替换文件,因为它是非空目录 (可选特定异常)
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,将调用checkRead方法来检查对源文件的读访问权限,将调用checkWrite方法来检查对目标文件的写访问权限。如果复制符号链接,则会调用安全管理器来检查LinkPermission("symbolic")
    • move

      public abstract void move(Path source, Path target, CopyOption... options) throws IOException
      将文件移动或重命名为目标文件。此方法的工作方式与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

      public abstract boolean isSameFile(Path path, Path path2) throws IOException
      测试两个路径是否指向同一文件。此方法的工作方式与Files.isSameFile(java.nio.file.Path, java.nio.file.Path)方法指定的方式完全相同。
      参数:
      path - 文件的一个路径
      path2 - 另一个路径
      返回:
      如果两个路径指向同一文件,则true
      抛出:
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,将调用checkRead方法来检查对两个文件的读访问权限。
    • isHidden

      public abstract boolean isHidden(Path path) throws IOException
      判断文件是否被视为隐藏。此方法的工作方式与Files.isHidden(java.nio.file.Path)方法指定的方式完全相同。

      此方法由isHidden方法调用。

      参数:
      path - 要测试的文件路径
      返回:
      如果文件被视为隐藏,则返回true
      抛出:
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,则调用checkRead方法来检查对文件的读取访问权限。
    • getFileStore

      public abstract FileStore getFileStore(Path path) throws IOException
      返回表示文件所在文件存储区的FileStore。此方法的工作方式与Files.getFileStore(java.nio.file.Path)方法指定的方式完全相同。
      参数:
      path - 文件路径
      返回:
      存储文件的文件存储区
      抛出:
      IOException - 如果发生I/O错误
      SecurityException - 在默认提供程序的情况下,并且安装了安全管理器,则调用checkRead方法来检查对文件的读取访问权限,并且还检查RuntimePermission("getFileStoreAttributes")
    • checkAccess

      public abstract void checkAccess(Path path, AccessMode... modes) throws IOException
      检查文件的存在性,以及可选地检查文件的可访问性。

      此方法可被isReadableisWritableisExecutable方法用于检查文件的可访问性。

      此方法检查文件的存在性,并且此Java虚拟机是否具有适当的权限,允许根据modes参数中指定的所有访问模式访问文件,如下所示:

      访问模式
      描述
      READ 检查文件是否存在,以及Java虚拟机是否有权限读取文件。
      WRITE 检查文件是否存在,以及Java虚拟机是否有权限写入文件。
      EXECUTE 检查文件是否存在,以及Java虚拟机是否有权限执行文件。在检查对目录的访问权限时,语义可能有所不同。例如,在UNIX系统上,检查EXECUTE访问权限会检查Java虚拟机是否有权限搜索目录以访问文件或子目录。

      如果modes参数的长度为零,则仅检查文件的存在性。

      如果此对象引用的文件是符号链接,则此方法会遵循符号链接。根据实现方式,此方法可能需要读取文件权限、访问控制列表或其他文件属性,以便检查对文件的有效访问。为了确定对文件的有效访问,可能需要访问多个属性,因此在某些实现中,此方法可能不与其他文件系统操作原子化。

      参数:
      path - 要检查的文件路径
      modes - 要检查的访问模式;可能没有元素
      抛出:
      UnsupportedOperationException - 要求实现支持检查READWRITEEXECUTE访问权限。指定此异常是为了允许在将来的版本中扩展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

      public boolean exists(Path path, LinkOption... options)
      测试文件是否存在。此方法完全按照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