- java.lang.Object
-
- java.nio.file.Files
-
public final class Filesextends Object
此类仅包含对文件,目录或其他类型文件进行操作的静态方法。在大多数情况下,此处定义的方法将委派给关联的文件系统提供程序以执行文件操作。
- 从以下版本开始:
- 1.7
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static long
copy(InputStream in, Path target, CopyOption... options)
将输入流中的所有字节复制到文件。static long
copy(Path source, OutputStream out)
将文件中的所有字节复制到输出流。static Path
copy(Path source, Path target, CopyOption... options)
将文件复制到目标文件。static Path
createDirectories(Path dir, FileAttribute<?>... attrs)
首先通过创建所有不存在的父目录来创建目录。static Path
createDirectory(Path dir, FileAttribute<?>... attrs)
创建一个新目录。static Path
createFile(Path path, FileAttribute<?>... attrs)
创建一个新的空文件,如果该文件已存在则失败。static Path
createLink(Path link, Path existing)
为现有文件创建新链接(目录条目) (可选操作) 。static Path
createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
创建指向目标的符号链接 (可选操作) 。static Path
createTempDirectory(String prefix, FileAttribute<?>... attrs)
在默认临时文件目录中创建一个新目录,使用给定的前缀生成其名称。static Path
createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs)
在指定目录中创建一个新目录,使用给定前缀生成其名称。static Path
createTempFile(String prefix, String suffix, FileAttribute<?>... attrs)
在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。static Path
createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。static void
delete(Path path)
删除文件。static boolean
deleteIfExists(Path path)
删除文件(如果存在)。static boolean
exists(Path path, LinkOption... options)
测试文件是否存在。static Stream<Path>
find(Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, FileVisitOption... options)
通过搜索以给定起始文件为根的文件树中的文件,返回Stream
,其中包含Path
。static Object
getAttribute(Path path, String attribute, LinkOption... options)
读取文件属性的值。static <V extends FileAttributeView>
VgetFileAttributeView(Path path, 类<V> type, LinkOption... options)
返回给定类型的文件属性视图。static FileStore
getFileStore(Path path)
返回表示文件所在文件存储的FileStore
。static FileTime
getLastModifiedTime(Path path, LinkOption... options)
返回文件的上次修改时间。static UserPrincipal
getOwner(Path path, LinkOption... options)
返回文件的所有者。static Set<PosixFilePermission>
getPosixFilePermissions(Path path, LinkOption... options)
返回文件的POSIX文件权限。static boolean
isDirectory(Path path, LinkOption... options)
测试文件是否是目录。static boolean
isExecutable(Path path)
测试文件是否可执行。static boolean
isHidden(Path path)
判断文件是否被视为 隐藏 。static boolean
isReadable(Path path)
测试文件是否可读。static boolean
isRegularFile(Path path, LinkOption... options)
测试文件是否是具有不透明内容的常规文件。static boolean
isSameFile(Path path, Path path2)
测试两个路径是否找到相同的文件。static boolean
isSymbolicLink(Path path)
测试文件是否是符号链接。static boolean
isWritable(Path path)
测试文件是否可写。static Stream<String>
lines(Path path)
从文件中读取所有行,如Stream
。static Stream<String>
lines(Path path, Charset cs)
从文件中读取所有行作为Stream
。static Stream<Path>
list(Path dir)
返回一个延迟填充的Stream
,其元素是目录中的条目。static Path
move(Path source, Path target, CopyOption... options)
将文件移动或重命名为目标文件。static BufferedReader
newBufferedReader(Path path)
打开文件进行读取,返回BufferedReader
以高效方式从文件中读取文本。static BufferedReader
newBufferedReader(Path path, Charset cs)
打开文件进行读取,返回BufferedReader
,可用于以高效的方式从文件中读取文本。static BufferedWriter
newBufferedWriter(Path path, Charset cs, OpenOption... options)
打开或创建用于写入的文件,返回可用于以高效方式将文本写入文件的BufferedWriter
。static BufferedWriter
newBufferedWriter(Path path, OpenOption... options)
打开或创建用于写入的文件,返回BufferedWriter
以便以有效的方式将文本写入文件。static SeekableByteChannel
newByteChannel(Path path, OpenOption... options)
打开或创建文件,返回可搜索的字节通道以访问该文件。static SeekableByteChannel
newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)
打开或创建文件,返回可搜索的字节通道以访问该文件。static DirectoryStream<Path>
newDirectoryStream(Path dir)
打开一个目录,返回DirectoryStream
以遍历目录中的所有条目。static DirectoryStream<Path>
newDirectoryStream(Path dir, String glob)
打开一个目录,返回DirectoryStream
以遍历目录中的条目。static DirectoryStream<Path>
newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)
打开一个目录,返回DirectoryStream
以遍历目录中的条目。static InputStream
newInputStream(Path path, OpenOption... options)
打开文件,返回输入流以从文件中读取。static OutputStream
newOutputStream(Path path, OpenOption... options)
打开或创建文件,返回可用于将字节写入文件的输出流。static boolean
notExists(Path path, LinkOption... options)
测试此路径所在的文件是否不存在。static String
probeContentType(Path path)
探测文件的内容类型。static byte[]
readAllBytes(Path path)
从文件中读取所有字节。static List<String>
readAllLines(Path path)
从文件中读取所有行。static List<String>
readAllLines(Path path, Charset cs)
从文件中读取所有行。static <A extends BasicFileAttributes>
AreadAttributes(Path path, 类<A> type, LinkOption... options)
将文件的属性读取为批量操作。static Map<String,Object>
readAttributes(Path path, String attributes, LinkOption... options)
将一组文件属性读取为批量操作。static String
readString(Path path)
static String
readString(Path path, Charset cs)
将文件中的所有字符读入字符串,使用指定的charset从字节解码为字符。static Path
readSymbolicLink(Path link)
读取符号链接的目标 (可选操作) 。static Path
setAttribute(Path path, String attribute, Object value, LinkOption... options)
设置文件属性的值。static Path
setLastModifiedTime(Path path, FileTime time)
更新文件的上次修改时间属性。static Path
setOwner(Path path, UserPrincipal owner)
更新文件所有者。static Path
setPosixFilePermissions(Path path, Set<PosixFilePermission> perms)
设置文件的POSIX权限。static long
size(Path path)
返回文件的大小(以字节为单位)。static Stream<Path>
walk(Path start, int maxDepth, FileVisitOption... options)
返回Stream
,它通过遍历以给定起始文件为根的文件树来延迟填充Path
。static Stream<Path>
walk(Path start, FileVisitOption... options)
通过遍历以给定起始文件为根的文件树,返回Stream
,其中包含Path
。static Path
walkFileTree(Path start, FileVisitor<? super Path> visitor)
走一个文件树。static Path
walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor)
走一个文件树。static Path
write(Path path, byte[] bytes, OpenOption... options)
将字节写入文件。static Path
write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)
将文本行写入文件。static Path
write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
将文本行写入文件。static Path
writeString(Path path, CharSequence csq, Charset cs, OpenOption... options)
将CharSequence写入文件。static Path
writeString(Path path, CharSequence csq, OpenOption... options)
写一个CharSequence到一个文件。
-
-
-
方法详细信息
-
newInputStream
public static InputStream newInputStream(Path path, OpenOption... options) throws IOException
打开文件,返回输入流以从文件中读取。 流不会被缓冲,并且不需要支持mark
或reset
方法。 多个并发线程可以安全地访问该流。 阅读从文件开头开始。 返回的流是否可异步关闭和/或可中断是高度特定于文件系统提供程序的,因此未指定。options
参数确定文件的打开方式。 如果没有选项,则相当于使用READ
选项打开文件。 除了READ
选项之外,实现还可以支持其他特定于实现的选项。- 参数
-
path
- 要打开的文件的路径 -
options
- 指定文件打开方式的选项 - 结果
- 一个新的输入流
- 异常
-
IllegalArgumentException
- 如果指定了无效的选项组合 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。
-
newOutputStream
public static OutputStream newOutputStream(Path path, OpenOption... options) throws IOException
打开或创建文件,返回可用于将字节写入文件的输出流。 生成的流不会被缓冲。 多个并发线程可以安全地访问该流。 返回的流是否可异步关闭和/或可中断是高度特定于文件系统提供程序的,因此未指定。此方法以
newByteChannel
方法指定的方式打开或创建文件,但READ
选项可能不存在于选项数组中。 如果不存在任何选项,则此方法的工作原理犹如CREATE
,TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者最初将现有regular-file
截断为0
如果存在)。用法示例:
Path path = ... // truncate and overwrite an existing file, or create the file if // it doesn't initially exist OutputStream out = Files.newOutputStream(path); // append to an existing file, fail if the file does not exist out = Files.newOutputStream(path, APPEND); // append to an existing file, create file if it doesn't initially exist out = Files.newOutputStream(path, CREATE, APPEND); // always create new file, failing if it already exists out = Files.newOutputStream(path, CREATE_NEW);
- 参数
-
path
- 要打开或创建的文件的路径 -
options
- 指定文件打开方式的选项 - 结果
- 一个新的输出流
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。
-
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
打开或创建文件,返回可搜索的字节通道以访问该文件。options
参数确定文件的打开方式。READ
和WRITE
选项确定是否应打开文件以进行读取和/或写入。 如果两个选项(或APPEND
选项)都不存在,则打开文件进行读取。 默认情况下,从文件开头开始读取或写入。除了
Options Option DescriptionREAD
和WRITE
,还可能出现以下选项:APPEND
If this option is present then the file is opened for writing and each invocation of the channel'swrite
method first advances the position to the end of the file and then writes the requested data. Whether the advancement of the position and the writing of the data are done in a single atomic operation is system-dependent and therefore unspecified. This option may not be used in conjunction with theREAD
orTRUNCATE_EXISTING
options.TRUNCATE_EXISTING
If this option is present then the existing file is truncated to a size of 0 bytes. This option is ignored when the file is opened only for reading.CREATE_NEW
If this option is present then a new file is created, failing if the file already exists or is a symbolic link. When creating a file the check for the existence of the file and the creation of the file if it does not exist is atomic with respect to other file system operations. This option is ignored when the file is opened only for reading.CREATE
If this option is present then an existing file is opened if it exists, otherwise a new file is created. This option is ignored if theCREATE_NEW
option is also present or the file is opened only for reading.DELETE_ON_CLOSE
When this option is present then the implementation makes a best effort attempt to delete the file when closed by theclose
method. If theclose
method is not invoked then a best effort attempt is made to delete the file when the Java virtual machine terminates.SPARSE
When creating a new file this option is a hint that the new file will be sparse. This option is ignored when not creating a new file.SYNC
Requires that every update to the file's content or metadata be written synchronously to the underlying storage device. (see Synchronized I/O file integrity).DSYNC
Requires that every update to the file's content be written synchronously to the underlying storage device. (see Synchronized I/O file integrity).实现还可以支持其他特定于实现的选项。
attrs
参数是可选的file-attributes
,用于在创建新文件时以原子方式设置。对于默认提供程序,返回的可搜索字节通道是
FileChannel
。用法示例:
Path path = ... // open file for reading ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ))); // open file for writing to the end of an existing file, creating // the file if it doesn't already exist WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND)); // create file with initial permissions, opening it for both reading and writing FileAttribute<Set<PosixFilePermission>> perms = ... SeekableByteChannel sbc = Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
- 参数
-
path
- 要打开或创建的文件的路径 -
options
- 指定文件打开方式的选项 -
attrs
- 创建文件时要自动设置的文件属性的可选列表 - 结果
- 一个新的可搜索字节通道
- 异常
-
IllegalArgumentException
- 如果集合包含无效的选项组合 -
UnsupportedOperationException
- 如果指定了不受支持的打开选项,或者数组包含在创建文件时无法原子设置的属性 -
FileAlreadyExistsException
- 如果该名称的文件已存在且指定了CREATE_NEW
选项 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法以检查文件打开以进行读取时对该路径的读取权限。 如果打开文件进行写入,则调用checkWrite
方法来检查对路径的写访问。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 另请参见:
-
FileChannel.open(Path,Set,FileAttribute[])
-
newByteChannel
public static SeekableByteChannel newByteChannel(Path path, OpenOption... options) throws IOException
打开或创建文件,返回可搜索的字节通道以访问该文件。此方法以
newByteChannel
方法指定的方式打开或创建文件。- 参数
-
path
- 要打开或创建的文件的路径 -
options
- 指定文件打开方式的选项 - 结果
- 一个新的可搜索字节通道
- 异常
-
IllegalArgumentException
- 如果集合包含无效的选项组合 -
UnsupportedOperationException
- 如果指定了不受支持的打开选项 -
FileAlreadyExistsException
- 如果该名称的文件已存在且指定了CREATE_NEW
选项 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法以检查文件是否已打开以进行读取时对该路径的读取权限。 如果打开文件进行写入,则调用checkWrite
方法来检查对路径的写访问。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 另请参见:
-
FileChannel.open(Path,OpenOption[])
-
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
打开一个目录,返回DirectoryStream
以遍历目录中的所有条目。 目录流iterator
返回的元素类型为Path
,每个元素表示目录中的条目。 该Path
对象由获得仿佛resolving
对目录条目的名称dir
。当不使用try-with-resources构造时,应在迭代完成后调用目录流的
close
方法,以释放为打开目录保留的任何资源。当实现支持对以无竞争方式执行的目录中的条目的操作时,则返回的目录流是
SecureDirectoryStream
。- 参数
-
dir
- 目录的路径 - 结果
- 一个新的,开放的
DirectoryStream
对象 - 异常
-
NotDirectoryException
- 如果无法以其他方式打开文件,因为它不是目录 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对目录的读访问权。
-
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException
打开一个目录,返回DirectoryStream
以迭代目录中的条目。 目录流iterator
返回的元素类型为Path
,每个元素表示目录中的条目。 通过Path
获得Path
对象,如dir所示的目录条目dir
。 迭代器返回的条目通过匹配给定的globbing模式的文件名的String
表示来过滤。例如,假设我们想要在目录中迭代以“.java”结尾的文件:
Path dir = ... try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.java")) { : }
通配模式由
getPathMatcher
方法指定。不使用try-with-resources构造时,应在迭代完成后调用目录流的
close
方法,以释放为打开目录保留的任何资源。当实现支持对以无竞争方式执行的目录中的条目的操作时,则返回的目录流是
SecureDirectoryStream
。- 参数
-
dir
- 目录的路径 -
glob
- glob模式 - 结果
- 一个新的,开放的
DirectoryStream
对象 - 异常
-
PatternSyntaxException
- 如果模式无效 -
NotDirectoryException
- 如果无法以其他方式打开文件,因为它不是目录 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对目录的读访问权。
-
newDirectoryStream
public static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
打开一个目录,返回DirectoryStream
以迭代目录中的条目。 目录流iterator
返回的元素类型为Path
,每个元素代表目录中的一个条目。 通过Path
获得Path
对象,如dir所示的目录条目dir
。 迭代器返回的条目由给定的filter
过滤。不使用try-with-resources构造时,应在迭代完成后调用目录流的
close
方法,以释放为打开目录保留的任何资源。如果过滤器由于未捕获的错误或运行时异常而终止,则会将其传播到
hasNext
或next
方法。 如果抛出IOException
,则会导致hasNext
或next
方法抛出DirectoryIteratorException
,其中IOException
为原因。当实现支持对以无竞争方式执行的目录中的条目的操作时,则返回的目录流是
SecureDirectoryStream
。用法示例:假设我们要遍历大于8K的目录中的文件。
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() { public boolean accept(Path file) throws IOException { return (Files.size(file) > 8192L); } }; Path dir = ... try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) { : }
- 参数
-
dir
- 目录的路径 -
filter
- 目录流过滤器 - 结果
- 一个新的,开放的
DirectoryStream
对象 - 异常
-
NotDirectoryException
- 如果无法以其他方式打开文件,因为它不是目录 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对目录的读访问权。
-
createFile
public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException
创建一个新的空文件,如果该文件已存在则失败。 检查文件是否存在以及创建新文件(如果不存在)是针对可能影响目录的所有其他文件系统活动的原子操作。attrs
参数是可选的file-attributes
,用于在创建文件时进行原子设置。 每个属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。- 参数
-
path
- 要创建的文件的路径 -
attrs
- 创建文件时要自动设置的文件属性的可选列表 - 结果
- 文件
- 异常
-
UnsupportedOperationException
- 如果数组包含在创建文件时无法以原子方式设置的属性 -
FileAlreadyExistsException
- 如果该名称的文件已存在 (可选的特定异常) -
IOException
- 如果发生I / O错误或父目录不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对新文件的写访问权。
-
createDirectory
public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
创建一个新目录。 检查文件是否存在以及目录的创建(如果不存在)是针对可能影响目录的所有其他文件系统活动的原子操作。 在需要首先创建所有不存在的父目录的情况下,应使用createDirectories
方法。attrs
参数是可选的file-attributes
,用于在创建目录时以原子方式设置。 每个属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。- 参数
-
dir
- 要创建的目录 -
attrs
- 创建目录时要自动设置的文件属性的可选列表 - 结果
- 目录
- 异常
-
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
FileAlreadyExistsException
- 如果无法以其他方式创建目录,因为该名称的文件已存在 (可选的特定异常) -
IOException
- 如果发生I / O错误或父目录不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对新目录的写访问权。
-
createDirectories
public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException
首先通过创建所有不存在的父目录来创建目录。 与createDirectory
方法不同,如果由于目录已存在而无法创建目录,则不会引发异常。attrs
参数是可选的file-attributes
,用于在创建不存在的目录时以原子方式设置。 每个文件属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。如果此方法失败,则可以在创建一些(但不是全部)父目录之后执行此操作。
- 参数
-
dir
- 要创建的目录 -
attrs
- 创建目录时要自动设置的文件属性的可选列表 - 结果
- 目录
- 异常
-
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
FileAlreadyExistsException
- 如果dir
存在但不是目录 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则在尝试创建目录之前调用checkWrite
方法,并为每个检查的父目录调用其checkRead
。 如果dir
不是绝对路径,则可能需要调用其toAbsolutePath
以获取其绝对路径。 这可能会调用安全管理器的checkPropertyAccess
方法来检查对系统属性的访问权限user.dir
-
createTempFile
public static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 生成的Path
与给定目录相关联的FileSystem
。有关如何构造文件名的详细信息取决于实现,因此未指定。 在可能的情况下,
prefix
和suffix
用于以与File.createTempFile(String,String,File)
方法相同的方式构造候选名称。与
File.createTempFile
方法一样,此方法只是临时文件工具的一部分。 在用作工作文件的情况下 ,可以使用DELETE_ON_CLOSE
选项打开生成的文件,以便在调用适当的close
方法时删除该文件。 或者,可以使用shutdown-hook
或File.deleteOnExit()
机制自动删除文件。attrs
参数是可选的file-attributes
,用于在创建文件时以原子方式设置。 每个属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。 如果未指定文件属性,则生成的文件可能对File.createTempFile(String,String,File)
方法创建的文件具有更严格的访问权限。- 参数
-
dir
- 创建文件的目录的路径 -
prefix
- 用于生成文件名的前缀字符串; 可能是null
-
suffix
- 用于生成文件名的后缀字符串; 可以是null
,在这种情况下使用“.tmp
” -
attrs
- 创建文件时要自动设置的文件属性的可选列表 - 结果
- 调用此方法之前不存在的新创建文件的路径
- 异常
-
IllegalArgumentException
- 如果前缀或后缀参数不能用于生成候选文件名 -
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
IOException
- 如果发生I / O错误或dir
不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。
-
createTempFile
public static Path createTempFile(String prefix, String suffix, FileAttribute<?>... attrs) throws IOException
在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。 生成的Path
与默认FileSystem
相关联。对于
dir
参数是临时文件目录的情况,此方法完全按照createTempFile(Path,String,String,FileAttribute[])
方法指定的方式工作。- 参数
-
prefix
- 用于生成文件名的前缀字符串; 可能是null
-
suffix
- 用于生成文件名的后缀字符串; 可以是null
,在这种情况下使用“.tmp
” -
attrs
- 创建文件时要自动设置的文件属性的可选列表 - 结果
- 调用此方法之前不存在的新创建文件的路径
- 异常
-
IllegalArgumentException
- 如果前缀或后缀参数不能用于生成候选文件名 -
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
IOException
- 如果发生I / O错误或临时文件目录不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写入权限。
-
createTempDirectory
public static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException
在指定目录中创建一个新目录,使用给定前缀生成其名称。 得到的Path
与同一关联FileSystem
为给定的目录。有关如何构造目录名称的详细信息取决于实现,因此未指定。 在可能的情况下,
prefix
用于构造候选名称。与
createTempFile
方法一样,此方法只是临时文件工具的一部分。 可以使用shutdown-hook
或File.deleteOnExit()
机制自动删除目录。attrs
参数是可选的file-attributes
,用于在创建目录时以原子方式设置。 每个属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。- 参数
-
dir
- 用于创建目录的目录的路径 -
prefix
- 用于生成目录名称的前缀字符串; 可能是null
-
attrs
- 创建目录时要原子设置的文件属性的可选列表 - 结果
- 调用此方法之前不存在的新创建的目录的路径
- 异常
-
IllegalArgumentException
- 如果前缀不能用于生成候选目录名称 -
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
IOException
- 如果发生I / O错误或dir
不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器, 则会在创建目录时调用checkWrite
方法来检查写访问权限。
-
createTempDirectory
public static Path createTempDirectory(String prefix, FileAttribute<?>... attrs) throws IOException
在默认临时文件目录中创建一个新目录,使用给定的前缀生成其名称。 生成的Path
与默认FileSystem
相关联。对于
dir
参数是临时文件目录的情况,此方法完全按照createTempDirectory(Path,String,FileAttribute[])
方法指定的方式工作。- 参数
-
prefix
- 用于生成目录名称的前缀字符串; 可能是null
-
attrs
- 创建目录时要自动设置的文件属性的可选列表 - 结果
- 调用此方法之前不存在的新创建的目录的路径
- 异常
-
IllegalArgumentException
- 如果前缀不能用于生成候选目录名称 -
UnsupportedOperationException
- 如果数组包含在创建目录时无法原子设置的属性 -
IOException
- 如果发生I / O错误或临时文件目录不存在 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器, 则会在创建目录时调用checkWrite
方法来检查写访问权限。
-
createSymbolicLink
public static Path createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException
创建指向目标的符号链接(可选操作) 。target
参数是链接的目标。 它可能是absolute
或相对路径,可能不存在。 当目标是相对路径时,结果链接上的文件系统操作相对于链接的路径。attrs
参数是可选的attributes
,用于在创建链接时进行原子设置。 每个属性由其name
标识。 如果数组中包含多个同名属性,则忽略除最后一次出现的所有属性。如果支持符号链接,但底层
FileStore
不支持符号链接,则可能会失败并显示IOException
。 此外,某些操作系统可能要求使用特定于实现的特权启动Java虚拟机以创建符号链接,在这种情况下,此方法可能会抛出IOException
。- 参数
-
link
- 要创建的符号链接的路径 -
target
- 符号链接的目标 -
attrs
- 创建符号链接时以原子方式设置的属性数组 - 结果
- 符号链接的路径
- 异常
-
UnsupportedOperationException
- 如果实现不支持符号链接或者数组包含在创建符号链接时无法原子设置的属性 -
FileAlreadyExistsException
- 如果名称已存在的文件 (可选特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会拒绝LinkPermission
("symbolic")
或其checkWrite
方法拒绝对符号链接路径的写访问权。
-
createLink
public static Path createLink(Path link, Path existing) throws IOException
为现有文件创建新链接(目录条目) (可选操作) 。link
参数定位要创建的目录条目。existing
参数是现有文件的路径。 此方法为文件创建新的目录条目,以便可以使用link
作为路径访问它。 在某些文件系统上,这称为创建“硬链接”。 是为文件还是为每个目录条目维护文件属性是特定于文件系统的,因此未指定。 通常,文件系统要求文件的所有链接(目录条目)位于同一文件系统上。 此外,在某些平台上,Java虚拟机可能需要以特定于实现的特权启动,以创建硬链接或创建指向目录的链接。- 参数
-
link
- 要创建的链接(目录条目) -
existing
- 现有文件的路径 - 结果
- 链接的路径(目录条目)
- 异常
-
UnsupportedOperationException
- 如果实现不支持将现有文件添加到目录 -
FileAlreadyExistsException
- 如果无法以其他方式创建条目,因为该名称的文件已存在 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会拒绝LinkPermission
("hard")
或其checkWrite
方法拒绝对链接或现有文件的写访问权。
-
delete
public static void delete(Path path) throws IOException
删除文件。实现可能需要检查文件以确定文件是否是目录。 因此,该方法相对于其他文件系统操作可能不是原子的。 如果文件是符号链接,则删除符号链接本身,而不是链接的最终目标。
如果文件是目录,则该目录必须为空。 在一些实现中,目录具有用于创建目录时创建的特殊文件或链接的条目。 在这样的实现中,当仅存在特殊条目时,目录被认为是空的。 此方法可与
walkFileTree
方法一起使用,以删除目录和目录中的所有条目,或者删除所需的整个文件树 。在某些操作系统上,当该文件被该Java虚拟机或其他程序打开并使用时,可能无法删除该文件。
- 参数
-
path
- 要删除的文件的路径 - 异常
-
NoSuchFileException
- 如果文件不存在 (可选的特定异常) -
DirectoryNotEmptyException
- 如果文件是目录,否则无法删除,因为该目录不为空 (可选特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用SecurityManager.checkDelete(String)
方法来检查对文件的删除访问权限
-
deleteIfExists
public static boolean deleteIfExists(Path path) throws IOException
删除文件(如果存在)。与
delete(Path)
方法一样,实现可能需要检查文件以确定该文件是否是目录。 因此,该方法相对于其他文件系统操作可能不是原子的。 如果文件是符号链接,则删除符号链接本身,而不是链接的最终目标。如果文件是目录,则该目录必须为空。 在一些实现中,目录具有用于创建目录时创建的特殊文件或链接的条目。 在这样的实现中,当仅存在特殊条目时,目录被认为是空的。
在某些操作系统上,当该文件被该Java虚拟机或其他程序打开并使用时,可能无法删除该文件。
- 参数
-
path
- 要删除的文件的路径 - 结果
-
true
如果该方法删除了该文件;false
如果由于文件不存在而无法删除 - 异常
-
DirectoryNotEmptyException
- 如果文件是目录,否则无法删除,因为该目录不为空 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用SecurityManager.checkDelete(String)
方法来检查对该文件的删除访问权限。
-
copy
public static Path copy(Path source, Path target, CopyOption... options) throws IOException
将文件复制到目标文件。此方法使用
options
参数将文件复制到目标文件,该参数指定如何执行复制。 默认情况下,如果目标文件已存在或者是符号链接,则复制将失败,除非源和目标是same
文件,在这种情况下,方法完成而不复制文件。 不需要将文件属性复制到目标文件。 如果支持符号链接,并且文件是符号链接,则复制链接的最终目标。 如果文件是目录,则它在目标位置创建一个空目录(不复制目录中的条目)。 此方法可与walkFileTree
方法一起使用,以复制目录和目录中的所有条目,或者复制所需的整个文件树 。options
参数可能包括以下任何内容:REPLACE_EXISTING
If the target file exists, then the target file is replaced if it is not a non-empty directory. If the target file exists and is a symbolic link, then the symbolic link itself, not the target of the link, is replaced.COPY_ATTRIBUTES
Attempts to copy the file attributes associated with this file to the target file. The exact file attributes that are copied is platform and file system dependent and therefore unspecified. Minimally, thelast-modified-time
is copied to the target file if supported by both the source and target file stores. Copying of file timestamps may result in precision loss.NOFOLLOW_LINKS
Symbolic links are not followed. If the file is a symbolic link, then the symbolic link itself, not the target of the link, is copied. It is implementation specific if file attributes can be copied to the new link. In other words, theCOPY_ATTRIBUTES
option may be ignored when copying a symbolic link.此接口的实现可以支持其他特定于实现的选项。
复制文件不是原子操作。 如果抛出
IOException
,则可能是目标文件不完整或者某些文件属性尚未从源文件复制。 指定REPLACE_EXISTING
选项并且目标文件存在时,将替换目标文件。 对于其他文件系统活动,检查文件是否存在以及新文件的创建可能不是原子的。用法示例:假设我们要将文件复制到目录中,并为其提供与源文件相同的文件名:
Path source = ... Path newdir = ... Files.copy(source, newdir.resolve(source.getFileName());
- 参数
-
source
- 要复制的文件的路径 -
target
- 目标文件的路径(可能与源路径的不同提供者相关联) -
options
- 指定应如何完成复制的选项 - 结果
- 目标文件的路径
- 异常
-
UnsupportedOperationException
- 如果阵列包含不受支持的复制选项 -
FileAlreadyExistsException
- 如果目标文件存在但由于未指定REPLACE_EXISTING
选项而无法替换 (可选的特定异常) -
DirectoryNotEmptyException
- 指定了REPLACE_EXISTING
选项但无法替换该文件,因为它是非空目录 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则调用checkRead
方法以检查对源文件的读访问权,调用checkWrite
以检查对目标文件的写访问权。 如果复制了符号链接,则调用安全管理器以检查LinkPermission
("symbolic")
。
-
move
public static Path move(Path source, Path target, CopyOption... options) throws IOException
将文件移动或重命名为目标文件。默认情况下,此方法尝试将文件移动到目标文件,如果目标文件存在则失败,除非源和目标是
same
文件,在这种情况下此方法无效。 如果文件是符号链接,则移动符号链接本身,而不是链接的目标。 可以调用此方法来移动空目录。 在一些实现中,目录具有用于创建目录时创建的特殊文件或链接的条目。 在这样的实现中,当仅存在特殊条目时,目录被认为是空的。 当调用移动非空目录时,如果不需要移动目录中的条目,则移动目录。 例如,重命名同一个FileStore
上的目录通常不需要移动目录中的条目。 移动目录时需要移动其条目,然后此方法失败(通过抛出IOException
)。 移动文件树可能涉及复制而不是移动目录,这可以使用copy
方法结合Files.walkFileTree
实用程序方法完成。options
参数可能包含以下任何内容:REPLACE_EXISTING
If the target file exists, then the target file is replaced if it is not a non-empty directory. If the target file exists and is a symbolic link, then the symbolic link itself, not the target of the link, is replaced.ATOMIC_MOVE
The move is performed as an atomic file system operation and all other options are ignored. If the target file exists then it is implementation specific if the existing file is replaced or this method fails by throwing anIOException
. If the move cannot be performed as an atomic file system operation thenAtomicMoveNotSupportedException
is thrown. This can arise, for example, when the target location is on a differentFileStore
and would require that the file be copied, or target location is associated with a different provider to this object.此接口的实现可以支持其他特定于实现的选项。
如果源文件存储和目标文件存储都支持,则移动文件会将
last-modified-time
复制到目标文件。 复制文件时间戳可能会导致精度损失。 实现还可以尝试复制其他文件属性,但如果无法复制文件属性,则不需要失败。 当移动作为非原子操作执行,并且抛出IOException
,则不定义文件的状态。 原始文件和目标文件都可能存在,目标文件可能不完整或者某些文件属性可能未从原始文件中复制。用法示例:假设我们要将文件重命名为“newname”,将文件保存在同一目录中:
Path source = ... Files.move(source, source.resolveSibling("newname"));
或者,假设我们要将文件移动到新目录,保留相同的文件名,并替换目录中该名称的任何现有文件:Path source = ... Path newdir = ... Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
- 参数
-
source
- 要移动的文件的路径 -
target
- 目标文件的路径(可能与源路径的不同提供者相关联) -
options
- 指定应如何完成移动的选项 - 结果
- 目标文件的路径
- 异常
-
UnsupportedOperationException
- 如果数组包含不受支持的复制选项 -
FileAlreadyExistsException
- 如果目标文件存在但由于未指定REPLACE_EXISTING
选项而无法替换 (可选特定异常) -
DirectoryNotEmptyException
- 指定了REPLACE_EXISTING
选项但该文件无法替换,因为它是非空目录,或者源是包含需要移动的条目的非空目录 (可选的特定异常) -
AtomicMoveNotSupportedException
- 如果options数组包含ATOMIC_MOVE
选项,但该文件无法作为原子文件系统操作移动。 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查源文件和目标文件的写访问权。
-
readSymbolicLink
public static Path readSymbolicLink(Path link) throws IOException
读取符号链接的目标(可选操作) 。如果文件系统支持symbolic links,则此方法用于读取链接的目标,如果文件不是符号链接,则会失败。 链接的目标不需要存在。 返回
Path
对象将使用相同的文件系统相关联link
。- 参数
-
link
- 符号链接的路径 - 结果
- 表示链接目标的
Path
对象 - 异常
-
UnsupportedOperationException
- 如果实现不支持符号链接 -
NotLinkException
- 如果无法读取目标,因为该文件不是符号链接 (可选的特定异常) -
IOException
- 如果发生I / O错误 -
SecurityException
-在默认的供应商,安全管理器的情况下被安装,它会检查FilePermission
已经授予的“readlink
”行动阅读的链接。
-
getFileStore
public static FileStore getFileStore(Path path) throws IOException
返回表示文件所在的文件存储的FileStore
。一旦获得对
FileStore
的引用,如果对从它获得的返回的FileStore
或FileStoreAttributeView
对象的操作继续取决于文件的存在,则它是特定于实现的。 特别是,没有为文件被删除或移动到其他文件存储的情况定义行为。- 参数
-
path
- 文件的路径 - 结果
- 存储文件的文件存储
- 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权,此外还会检查RuntimePermission
("getFileStoreAttributes")
-
isSameFile
public static boolean isSameFile(Path path, Path path2) throws IOException
测试两个路径是否找到相同的文件。如果两个
Path
对象都是equal
,则此方法返回true
而不检查文件是否存在。 如果两个Path
对象与不同的提供程序关联,则此方法返回false
。 否则,此方法检查两个Path
对象是否都找到相同的文件,并且根据实现情况,可能需要打开或访问这两个文件。如果文件系统和文件保持静态,则此方法实现非空
Paths
的等价关系。- 自反性 :为
Path
f
,isSameFile(f,f)
应该返回true
。 - 它是对称的 :两个
Paths
f
和g
,isSameFile(f,g)
将等于isSameFile(g,f)
。 - 传递性 :三
Paths
f
,g
和h
,如果isSameFile(f,g)
回报true
个isSameFile(g,h)
回报true
,然后isSameFile(f,h)
将返回true
。
- 参数
-
path
- 文件的一个路径 -
path2
- 另一条路 - 结果
-
true
当且仅当两个路径找到相同的文件时 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对这两个文件的读取访问权限。 - 另请参见:
-
BasicFileAttributes.fileKey()
- 自反性 :为
-
isHidden
public static boolean isHidden(Path path) throws IOException
判断文件是否被视为隐藏 。 隐藏的确切定义是平台或提供者依赖。 例如,在UNIX上,如果文件的名称以句点字符('。')开头,则认为该文件是隐藏的。 在Windows上,如果文件不是目录并且设置了DOShidden
属性,则该文件被视为隐藏。根据实现,此方法可能需要访问文件系统以确定文件是否被视为隐藏。
- 参数
-
path
- 要测试的文件的路径 - 结果
-
true
如果文件被视为隐藏 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。
-
probeContentType
public static String probeContentType(Path path) throws IOException
探测文件的内容类型。此方法使用已安装的
FileTypeDetector
实现来探测给定文件以确定其内容类型。 反过来,调用每个文件类型检测器probeContentType
来探测文件类型。 如果文件被识别,则返回内容类型。 如果任何已安装的文件类型检测器无法识别该文件,则调用系统默认文件类型检测器来猜测内容类型。给定的Java虚拟机调用维护系统范围的文件类型检测器列表。 使用
ServiceLoader
类定义的服务提供者加载工具加载已安装的文件类型检测器。 使用系统类加载器加载已安装的文件类型检测器。 如果找不到系统类加载器,则使用平台类加载器。 文件类型检测器通常通过将它们放在应用程序类路径上的JAR文件中来安装,JAR文件在资源目录META-INF/services
包含名为java.nio.file.spi.FileTypeDetector
的提供程序配置文件,该文件列出了一个或多个具体子类的完全限定名称FileTypeDetector
具有零参数构造函数。 如果定位或实例化已安装的文件类型检测器的过程失败,则抛出未指定的错误。 安装的提供程序所在的顺序是特定于实现的。此方法的返回值是由RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies定义的多用途Internet邮件扩展(MIME)内容类型的值的字符串形式。 保证字符串可以根据RFC中的语法进行解析。
- 参数
-
path
- 要探测的文件的路径 - 结果
- 文件的内容类型,如果无法确定内容类型,
null
- 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果安装了安全管理器,它将拒绝文件类型检测器实现所需的未指定权限。
-
getFileAttributeView
public static <V extends FileAttributeView> V getFileAttributeView(Path path, 类<V> type, LinkOption... options)
返回给定类型的文件属性视图。文件属性视图提供一组文件属性的只读或可更新视图。 此方法适用于文件属性视图定义用于读取或更新文件属性的类型安全方法的情况。
type
参数是所需属性视图的类型,如果支持,该方法将返回该类型的实例。BasicFileAttributeView
类型支持访问文件的基本属性。 调用此方法以选择该类型的文件属性视图将始终返回该类的实例。options
数组可用于指示如果文件是符号链接的情况,结果文件属性视图如何处理符号链接。 默认情况下,遵循符号链接。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。 不支持符号链接的实现会忽略此选项。用法示例:假设我们想要读取或设置文件的ACL(如果支持):
Path path = ... AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class); if (view != null) { List<AclEntry> acl = view.getAcl(); : }
- 参数类型
-
V
-FileAttributeView
类型 - 参数
-
path
- 文件的路径 -
type
- 与文件属性视图对应的类
对象 -
options
- 指示如何处理符号链接的选项 - 结果
- 指定类型的文件属性视图,如果属性视图类型不可用,
null
-
readAttributes
public static <A extends BasicFileAttributes> A readAttributes(Path path, 类<A> type, LinkOption... options) throws IOException
将文件的属性读取为批量操作。type
参数是所需属性的类型,如果支持,此方法将返回该类型的实例。 所有实现都支持一组基本文件属性,因此使用type
参数BasicFileAttributes.class
调用此方法不会抛出UnsupportedOperationException
。options
数组可用于指示在文件是符号链接的情况下如何处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。如果所有文件属性都被读作相对于其他文件系统操作的原子操作,则它是特定于实现的。
用法示例:假设我们要批量读取文件的属性:
Path path = ... BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
或者,假设我们想要读取文件的POSIX属性而不遵循符号链接:PosixFileAttributes attrs = Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
- 参数类型
-
A
-BasicFileAttributes
类型 - 参数
-
path
- 文件的路径 -
type
- 需要读取的文件属性的类
-
options
- 指示如何处理符号链接的选项 - 结果
- 文件属性
- 异常
-
UnsupportedOperationException
- 如果不支持给定类型的属性 -
IOException
- 如果发生I / O错误 -
SecurityException
- 对于默认提供程序,安装了安全管理器,调用其checkRead
方法以检查对该文件的读访问权。 如果调用此方法来读取安全敏感属性,则可以调用安全管理器来检查其他权限。
-
setAttribute
public static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
设置文件属性的值。attribute
参数标识要设置的属性并采用以下形式:[ view-name :] attribute-name
方括号[...]描绘可选组件,字符':'
代表自己。view-name是
FileAttributeView
的name
,用于标识一组文件属性。 如果未指定,则默认为"basic"
,即文件属性视图的名称,用于标识许多文件系统通用的基本文件属性集。 attribute-name是集合中属性的名称。options
数组可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并设置链接最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。用法示例:假设我们要设置DOS“隐藏”属性:
Path path = ... Files.setAttribute(path, "dos:hidden", true);
- 参数
-
path
- 文件的路径 -
attribute
- 要设置的属性 -
value
- 属性值 -
options
- 指示如何处理符号链接的选项 - 结果
- 给定的路径
- 异常
-
UnsupportedOperationException
- 如果属性视图不可用 -
IllegalArgumentException
- 如果未指定属性名称,或者未识别属性名称,或者属性值的类型正确但值不合适 -
ClassCastException
- 如果属性值不是预期类型,或者是包含不是预期类型的元素的集合 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkWrite
方法拒绝对该文件的写访问。 如果调用此方法来设置安全敏感属性,则可以调用安全管理器来检查其他权限。
-
getAttribute
public static Object getAttribute(Path path, String attribute, LinkOption... options) throws IOException
读取文件属性的值。attribute
参数标识要读取的属性并采用以下形式:[ view-name :] attribute-name
方括号[...]描绘一个可选组件,字符':'
代表自己。view-name是
FileAttributeView
的name
,用于标识一组文件属性。 如果未指定,则默认为"basic"
,即文件属性视图的名称,用于标识许多文件系统通用的基本文件属性集。 attribute-name是属性的名称 。options
数组可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。用法示例:假设我们在支持“
unix
”视图的系统上需要文件所有者的用户标识:Path path = ... int uid = (Integer)Files.getAttribute(path, "unix:uid");
- 参数
-
path
- 文件的路径 -
attribute
- 要读取的属性 -
options
- 指示如何处理符号链接的选项 - 结果
- 属性值
- 异常
-
UnsupportedOperationException
- 如果属性视图不可用 -
IllegalArgumentException
- 如果未指定属性名称或未识别属性名称 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。 如果调用此方法来读取安全敏感属性,则可以调用安全管理器来检查其他权限。
-
readAttributes
public static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
将一组文件属性读取为批量操作。attributes
参数标识要读取的属性并采用以下形式:[ view-name :] attribute-list
方括号[...]描绘可选组件,字符':'
代表自己。view-name是
FileAttributeView
的name
,用于标识一组文件属性。 如果未指定,则默认为"basic"
,即文件属性视图的名称,用于标识许多文件系统通用的基本文件属性集。attribute-list组件是要读取的一个或多个属性名称的逗号分隔列表。 如果列表包含值
"*"
则读取所有属性。 不受支持的属性将被忽略,并且不会出现在返回的地图中。 如果所有属性都被读作相对于其他文件系统操作的原子操作,则它是特定于实现的。以下示例演示了
Possible values Example Descriptionattributes
参数的可能值:"*"
Read allbasic-file-attributes
."size,lastModifiedTime,lastAccessTime"
Reads the file size, last modified time, and last access time attributes."posix:*"
Read allPOSIX-file-attributes
."posix:permissions,owner,size"
Reads the POSIX file permissions, owner, and file size.options
阵列可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。- 参数
-
path
- 文件的路径 -
attributes
- 要读取的属性 -
options
- 指示如何处理符号链接的选项 - 结果
- 返回的属性的映射; 地图的键是属性名称,其值是属性值
- 异常
-
UnsupportedOperationException
- 如果属性视图不可用 -
IllegalArgumentException
- 如果未指定任何属性或指定了无法识别的属性 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。 如果调用此方法来读取安全敏感属性,则可以调用安全管理器来检查其他权限。
-
getPosixFilePermissions
public static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options) throws IOException
返回文件的POSIX文件权限。path
参数与支持PosixFileAttributeView
的FileSystem
相关联。 此属性视图提供对通常与实现可移植操作系统接口(POSIX)标准系列的操作系统所使用的文件系统上的文件相关联的文件属性的访问。options
数组可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。- 参数
-
path
- 文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
- 文件权限
- 异常
-
UnsupportedOperationException
- 如果关联的文件系统不支持PosixFileAttributeView
-
IOException
- 如果发生I / O错误 -
SecurityException
- 对于默认提供程序,安装了安全管理器,它拒绝RuntimePermission
("accessUserInformation")
或其checkRead
方法拒绝对该文件的读访问权。
-
setPosixFilePermissions
public static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) throws IOException
设置文件的POSIX权限。path
参数与支持PosixFileAttributeView
的FileSystem
相关联。 此属性视图提供对通常与实现可移植操作系统接口(POSIX)标准系列的操作系统所使用的文件系统上的文件相关联的文件属性的访问。- 参数
-
path
- 文件的路径 -
perms
- 新的权限集 - 结果
- 给定的路径
- 异常
-
UnsupportedOperationException
- 如果关联的文件系统不支持PosixFileAttributeView
-
ClassCastException
- 如果集合包含的类型不是PosixFilePermission
类型 -
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会拒绝RuntimePermission
("accessUserInformation")
或其checkWrite
方法拒绝对该文件的写访问权。
-
getOwner
public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException
返回文件的所有者。path
参数与支持FileOwnerAttributeView
的文件系统关联 。 此文件属性视图提供对文件所有者的文件属性的访问。- 参数
-
path
- 文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
- 表示文件所有者的用户主体
- 异常
-
UnsupportedOperationException
- 如果关联的文件系统不支持FileOwnerAttributeView
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会拒绝RuntimePermission
("accessUserInformation")
或其checkRead
方法拒绝对该文件的读访问权。
-
setOwner
public static Path setOwner(Path path, UserPrincipal owner) throws IOException
更新文件所有者。path
参数与支持FileOwnerAttributeView
的文件系统关联 。 此文件属性视图提供对文件所有者的文件属性的访问。用法示例:假设我们想让“joe”成为文件的所有者:
Path path = ... UserPrincipalLookupService lookupService = provider(path).getUserPrincipalLookupService(); UserPrincipal joe = lookupService.lookupPrincipalByName("joe"); Files.setOwner(path, joe);
- 参数
-
path
- 文件的路径 -
owner
- 新文件所有者 - 结果
- 给定的路径
- 异常
-
UnsupportedOperationException
- 如果关联的文件系统不支持FileOwnerAttributeView
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会拒绝RuntimePermission
("accessUserInformation")
或其checkWrite
方法拒绝对该文件的写访问权。 - 另请参见:
-
FileSystem.getUserPrincipalLookupService()
,UserPrincipalLookupService
-
isSymbolicLink
public static boolean isSymbolicLink(Path path)
测试文件是否是符号链接。其中要求区分该文件是不是一个符号链接,则文件属性可以与被读取的情况下的I / O异常
readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isSymbolicLink()
方法。- 参数
-
path
- 文件的路径 - 结果
-
true
如果文件是符号链接;false
如果文件不存在,则不是符号链接,或者无法确定文件是否为符号链接。 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。
-
isDirectory
public static boolean isDirectory(Path path, LinkOption... options)
测试文件是否是目录。options
数组可用于指示在文件是符号链接的情况下如何处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。其中要求区分该文件是不是一个目录,则文件属性可以与被读取的情况下的I / O异常
readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isDirectory()
方法。- 参数
-
path
- 要测试的文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
-
true
如果文件是目录;false
如果文件不存在,不是目录,或者无法确定文件是否是目录。 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。
-
isRegularFile
public static boolean isRegularFile(Path path, LinkOption... options)
测试文件是否是具有不透明内容的常规文件。options
数组可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。其中要求区分该文件是不是一个普通文件,则文件属性可以与被读取的情况下的I / O异常
readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isRegularFile()
方法。- 参数
-
path
- 文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
-
true
如果文件是常规文件;false
如果文件不存在,不是常规文件,或者无法确定文件是否是常规文件。 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。
-
getLastModifiedTime
public static FileTime getLastModifiedTime(Path path, LinkOption... options) throws IOException
返回文件的上次修改时间。options
数组可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。- 参数
-
path
- 文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
-
FileTime
表示文件上次修改的时间,或者当文件系统不支持指示上次修改时间的时间戳时的特定于实现的默认值 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。 - 另请参见:
-
BasicFileAttributes.lastModifiedTime()
-
setLastModifiedTime
public static Path setLastModifiedTime(Path path, FileTime time) throws IOException
更新文件的上次修改时间属性。 文件时间将转换为文件系统支持的纪元和精度。 从较细粒度转换为较粗粒度会导致精度损失。 尝试设置文件系统不支持的最后修改时间或超出基础文件存储支持的范围时,此方法的行为未定义。 投掷IOException
可能会或者不会失败。用法示例:假设我们要将上次修改时间设置为当前时间:
Path path = ... FileTime now = FileTime.fromMillis(System.currentTimeMillis()); Files.setLastModifiedTime(path, now);
- 参数
-
path
- 文件的路径 -
time
- 新的上次修改时间 - 结果
- 给定的路径
- 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkWrite
方法拒绝对该文件的写访问权。 - 另请参见:
-
BasicFileAttributeView.setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime)
-
size
public static long size(Path path) throws IOException
- 参数
-
path
- 文件的路径 - 结果
- 文件大小,以字节为单位
- 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则其checkRead
方法拒绝对该文件的读访问权。 - 另请参见:
-
BasicFileAttributes.size()
-
exists
public static boolean exists(Path path, LinkOption... options)
测试文件是否存在。options
参数可用于指示在文件是符号链接的情况下如何处理符号链接。 默认情况下,遵循符号链接。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。请注意,此方法的结果会立即过时。 如果此方法指示文件存在,则无法保证后续访问将成功。 在安全敏感应用程序中使用此方法时应小心。
- 参数
-
path
- 要测试的文件的路径 -
options
- 指示如何处理符号链接的选项。 - 结果
-
true
如果文件存在;false
如果文件不存在或无法确定其存在。 - 异常
-
SecurityException
- 对于默认提供程序,调用SecurityManager.checkRead(String)
以检查对文件的读访问权。 - 另请参见:
-
notExists(java.nio.file.Path, java.nio.file.LinkOption...)
-
notExists
public static boolean notExists(Path path, LinkOption... options)
测试此路径所在的文件是否不存在。 此方法适用于需要在确认文件不存在时采取操作的情况。options
参数可用于指示如何在文件是符号链接的情况下处理符号链接。 默认情况下,遵循符号链接。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。请注意,此方法不是
exists
方法的补充。 如果无法确定文件是否存在,则两种方法都返回false
。 与exists
方法一样,此方法的结果立即过时。 如果此方法指示文件确实存在,则无法保证后续尝试创建文件将成功。 在安全敏感应用程序中使用此方法时应小心。- 参数
-
path
- 要测试的文件的路径 -
options
- 指示如何处理符号链接的选项 - 结果
-
true
如果该文件不存在;false
如果文件存在或无法确定其存在 - 异常
-
SecurityException
- 对于默认提供程序,调用SecurityManager.checkRead(String)
以检查对文件的读访问权。
-
isReadable
public static boolean isReadable(Path path)
测试文件是否可读。 此方法检查文件是否存在,以及此Java虚拟机是否具有允许其打开文件以进行读取的适当权限。 根据实现,此方法可能需要读取文件权限,访问控制列表或其他文件属性,以检查对文件的有效访问。 因此,相对于其他文件系统操作,该方法可能不是原子的。请注意,此方法的结果立即过时,无法保证随后尝试打开文件进行读取将成功(或者甚至它将访问同一文件)。 在安全敏感应用程序中使用此方法时应小心。
- 参数
-
path
- 要检查的文件的路径 - 结果
-
true
如果文件存在且可读;false
如果该文件不存在,则读取访问权将被拒绝,因为Java虚拟机没有足够的权限,或者无法确定访问权限 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器, 则会调用checkRead
来检查对该文件的读访问权。
-
isWritable
public static boolean isWritable(Path path)
测试文件是否可写。 此方法检查文件是否存在,以及此Java虚拟机是否具有允许其打开文件进行写入的适当权限。 根据实现,此方法可能需要读取文件权限,访问控制列表或其他文件属性,以检查对文件的有效访问。 因此,相对于其他文件系统操作,该方法可能不是原子的。请注意,此方法的结果立即过时,无法保证后续尝试打开文件以进行写入将成功(或者甚至它将访问同一文件)。 在安全敏感应用程序中使用此方法时应小心。
- 参数
-
path
- 要检查的文件的路径 - 结果
-
true
如果文件存在且可写;false
如果该文件不存在,将拒绝写入访问,因为Java虚拟机没有足够的权限,或者无法确定访问权限 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器, 则会调用checkWrite
来检查对该文件的写访问权。
-
isExecutable
public static boolean isExecutable(Path path)
测试文件是否可执行。 此方法检查文件是否存在,以及此Java虚拟机是否具有该文件的适当权限execute
。 检查对目录的访问时,语义可能不同。 例如,在UNIX系统上,检查执行访问权限检查Java虚拟机是否有权搜索目录以访问文件或子目录。根据实现,此方法可能需要读取文件权限,访问控制列表或其他文件属性,以检查对文件的有效访问。 因此,相对于其他文件系统操作,该方法可能不是原子的。
请注意,此方法的结果立即过时,无法保证后续执行文件的尝试将成功(或甚至它将访问同一文件)。 在安全敏感应用程序中使用此方法时应小心。
- 参数
-
path
- 要检查的文件的路径 - 结果
-
true
如果文件存在且可执行;false
如果该文件不存在,则执行访问将被拒绝,因为Java虚拟机没有足够的权限,或者无法确定访问权限 - 异常
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器, 则会调用checkExec
来检查对该文件的执行访问。
-
walkFileTree
public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor) throws IOException
走一个文件树。此方法遍历以给定起始文件为根的文件树。 文件树遍历是深度优先的 ,并且对于遇到的每个文件调用给定的
FileVisitor
。 当访问了树中的所有可访问文件或访问方法返回结果TERMINATE
时,文件树遍历完成。 如果访问方法由于IOException
,未捕获的错误或运行时异常而终止,则终止遍历并将错误或异常传播到此方法的调用方。对于遇到的每个文件,此方法尝试读取其
BasicFileAttributes
。 如果该文件不是目录,则使用文件属性调用visitFile
方法。 如果由于I / O异常而无法读取文件属性,则会使用I / O异常调用visitFileFailed
方法。如果文件是目录,并且无法打开目录,则使用I / O异常调用
visitFileFailed
方法,之后,默认情况下,文件树步行将继续在目录的下一个兄弟处。如果目录成功打开,则访问目录中的条目及其后代 。 当访问了所有条目,或者在迭代目录期间发生I / O错误时,将关闭该目录并调用访问者的
postVisitDirectory
方法。 默认情况下,文件树遍历继续在目录的下一个兄弟处。默认情况下,此方法不会自动遵循符号链接。 如果
options
参数包含FOLLOW_LINKS
选项,则遵循符号链接。 当跟踪链接,并且无法读取目标的属性时,此方法将尝试获取链接的BasicFileAttributes
。 如果可以读取它们,则使用链接的属性调用visitFile
方法(否则,visitFileFailed
调用visitFileFailed
方法)。如果
options
参数包含FOLLOW_LINKS
选项,则此方法会跟踪所访问的目录,以便可以检测到循环。 当目录中的条目是目录的祖先时,就会出现一个循环。 通过记录file-key
目录或文件密钥不可用来完成循环检测,方法是调用isSameFile
方法来测试目录是否与祖先相同。 当检测到循环它被视为I / O错误,并且visitFileFailed
方法被调用与实例FileSystemLoopException
。maxDepth
参数是要访问的目录的最大级别数。 值0
表示仅访问起始文件,除非安全管理器拒绝。 值MAX_VALUE
可用于指示应访问所有级别。 除非无法读取基本文件属性,否则将调用visitFile
方法,包括在maxDepth
遇到的所有文件,在这种情况下,将调用visitFileFailed
方法。如果访客返回
null
的结果,则抛出NullPointerException
。安装安全管理器并拒绝访问文件(或目录)时,将忽略该安全管理器,并且不会为该文件(或目录)调用访问者。
- 参数
-
start
- 起始文件 -
options
- 用于配置遍历的选项 -
maxDepth
- 要访问的最大目录级别数 -
visitor
- 要为每个文件调用的文件访问者 - 结果
- 起始文件
- 异常
-
IllegalArgumentException
- 如果maxDepth
参数为负数 -
SecurityException
- 如果安全管理器拒绝访问起始文件。 对于默认提供程序,将调用checkRead
方法来检查对目录的读访问权。 -
IOException
- 如果访问者方法引发I / O错误
-
walkFileTree
public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor) throws IOException
走一个文件树。此方法的工作方式就像调用它等同于计算表达式一样:
walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)
- 参数
-
start
- 起始文件 -
visitor
- 要为每个文件调用的文件访问者 - 结果
- 起始文件
- 异常
-
SecurityException
- 如果安全管理器拒绝访问起始文件。 对于默认提供程序,将调用checkRead
方法来检查对目录的读访问权。 -
IOException
- 如果访问者方法引发I / O错误
-
newBufferedReader
public static BufferedReader newBufferedReader(Path path, Charset cs) throws IOException
打开文件进行读取,返回BufferedReader
,可用于以有效的方式从文件中读取文本。 使用指定的字符集将文件中的字节解码为字符。 阅读从文件开头开始。如果读取格式错误或不可映射的字节序列,则从文件读取的
Reader
方法抛出IOException
。- 参数
-
path
- 文件的路径 -
cs
- 用于解码的字符集 - 结果
- 具有默认缓冲区大小的新缓冲读取器,用于从文件中读取文本
- 异常
-
IOException
- 如果打开文件时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读取权限。 - 另请参见:
-
readAllLines(java.nio.file.Path, java.nio.charset.Charset)
-
newBufferedReader
public static BufferedReader newBufferedReader(Path path) throws IOException
打开文件进行读取,返回BufferedReader
以高效方式从文件中读取文本。 使用UTF-8
charset
将文件中的字节解码为字符。此方法的工作方式就像调用它等同于计算表达式一样:
Files.newBufferedReader(path, StandardCharsets.UTF_8)
- 参数
-
path
- 文件的路径 - 结果
- 具有默认缓冲区大小的新缓冲读取器,用于从文件中读取文本
- 异常
-
IOException
- 如果打开文件时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 1.8
-
newBufferedWriter
public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options) throws IOException
打开或创建用于写入的文件,返回可用于以高效方式将文本写入文件的BufferedWriter
。options
参数指定文件的创建或打开方式。 如果不存在任何选项,则此方法的工作原理犹如CREATE
,TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者最初将现有regular-file
截断为大小为0
如果存在)。如果文本无法使用指定的charset进行编码,则写入文本的
Writer
方法会抛出IOException
。- 参数
-
path
- 文件的路径 -
cs
- 用于编码的字符集 -
options
- 指定文件打开方式的选项 - 结果
- 具有默认缓冲区大小的新缓冲写入程序,用于将文本写入文件
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果在打开或创建文件时发生I / O错误 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 另请参见:
-
write(Path,Iterable,Charset,OpenOption[])
-
newBufferedWriter
public static BufferedWriter newBufferedWriter(Path path, OpenOption... options) throws IOException
打开或创建用于写入的文件,返回BufferedWriter
以便以有效的方式将文本写入文件。 使用UTF-8
charset
将文本编码为字节以进行写入。此方法的工作方式就像调用它等同于计算表达式一样:
Files.newBufferedWriter(path, StandardCharsets.UTF_8, options)
- 参数
-
path
- 文件的路径 -
options
- 指定文件打开方式的选项 - 结果
- 具有默认缓冲区大小的新缓冲写入程序,用于将文本写入文件
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果在打开或创建文件时发生I / O错误 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写入权限。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 从以下版本开始:
- 1.8
-
copy
public static long copy(InputStream in, Path target, CopyOption... options) throws IOException
将输入流中的所有字节复制到文件。 返回时,输入流将位于流的末尾。默认情况下,如果目标文件已存在或者是符号链接,则复制将失败。 如果指定了
REPLACE_EXISTING
选项,并且目标文件已存在,则如果它不是非空目录,则替换它。 如果目标文件存在且是符号链接,则替换符号链接。 在此版本中,REPLACE_EXISTING
选项是此方法必须支持的唯一选项。 未来的版本可能支持其他选项。如果从输入流读取或写入文件时发生I / O错误,则可以在创建目标文件之后以及在读取或写入某些字节之后执行此操作。 因此,输入流可能不在流的末尾并且可能处于不一致状态。 如果发生I / O错误,强烈建议立即关闭输入流。
此方法可能会无限期地阻止从输入流中读取(或写入文件)。 在复制期间输入流异步关闭或线程中断的情况的行为是高度输入的流和文件系统提供程序特定的,因此未指定。
用法示例 :假设我们要捕获网页并将其保存到文件中:
Path path = ... URI u = URI.create("http://java.sun.com/"); try (InputStream in = u.toURL().openStream()) { Files.copy(in, path); }
- 参数
-
in
- 要读取的输入流 -
target
- 文件的路径 -
options
- 指定应如何完成复制的选项 - 结果
- 读取或写入的字节数
- 异常
-
IOException
- 如果在读取或写入时发生I / O错误 -
FileAlreadyExistsException
- 如果目标文件存在但由于未指定REPLACE_EXISTING
选项而无法替换 (可选的特定异常) -
DirectoryNotEmptyException
- 指定了REPLACE_EXISTING
选项,但无法替换该文件,因为它是非空目录 (可选特定异常) * -
UnsupportedOperationException
- 如果options
包含options
的复制选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写入权限。 如果指定了REPLACE_EXISTING
选项,则会调用安全管理器的checkDelete
方法来检查是否可以删除现有文件。
-
copy
public static long copy(Path source, OutputStream out) throws IOException
将文件中的所有字节复制到输出流。如果从文件读取或写入输出流发生I / O错误,则可能在读取或写入某些字节后执行此操作。 因此,输出流可能处于不一致状态。 如果发生I / O错误,强烈建议立即关闭输出流。
此方法可能会无限期地阻止写入输出流(或从文件中读取)。 在复制期间异步关闭输出流或线程中断的情况的行为是高度输出流和文件系统提供程序特定的,因此未指定。
请注意,如果给定的输出流是
Flushable
,则在此方法完成后可能需要调用其flush
方法,以便刷新任何缓冲的输出。- 参数
-
source
- 文件的路径 -
out
- 要写入的输出流 - 结果
- 读取或写入的字节数
- 异常
-
IOException
- 如果在读取或写入时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读取权限。
-
readAllBytes
public static byte[] readAllBytes(Path path) throws IOException
从文件中读取所有字节。 该方法确保在读取所有字节或抛出I / O错误或其他运行时异常时关闭文件。请注意,此方法适用于方便将所有字节读入字节数组的简单情况。 它不适用于读取大文件。
- 参数
-
path
- 文件的路径 - 结果
- 包含从文件读取的字节的字节数组
- 异常
-
IOException
- 如果从流中读取I / O错误 -
OutOfMemoryError
- 如果无法分配所需大小的数组,例如文件大于2GB
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。
-
readString
public static String readString(Path path) throws IOException
将文件中的所有内容读入字符串,使用UTF-8
charset
从字节解码为字符。 该方法确保在读取所有内容或抛出I / O错误或其他运行时异常时关闭文件。此方法等效于:
readString(path, StandardCharsets.UTF_8)
- 参数
-
path
- 文件的路径 - 结果
- 包含从文件中读取的内容的String
- 异常
-
IOException
- 如果从文件读取发生I / O错误或读取格式错误或不可映射的字节序列 -
OutOfMemoryError
- 如果文件非常大,例如大于2GB
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 11
-
readString
public static String readString(Path path, Charset cs) throws IOException
将文件中的所有字符读入字符串,使用指定的charset从字节解码为字符。 该方法确保在读取所有内容或抛出I / O错误或其他运行时异常时关闭文件。此方法读取所有内容,包括中间和/或末尾的行分隔符。 生成的字符串将包含文件中显示的行分隔符。
- API Note:
- 此方法适用于将文件内容读入String的适当且方便的简单情况。 它不适用于读取非常大的文件。
- 参数
-
path
- 文件的路径 -
cs
- 用于解码的字符集 - 结果
- 包含从文件中读取的内容的String
- 异常
-
IOException
- 如果从文件读取发生I / O错误或读取格式错误或不可映射的字节序列 -
OutOfMemoryError
- 如果文件非常大,例如大于2GB
-
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 11
-
readAllLines
public static List<String> readAllLines(Path path, Charset cs) throws IOException
从文件中读取所有行。 此方法可确保在读取所有字节或抛出I / O错误或其他运行时异常时关闭文件。 使用指定的字符集将文件中的字节解码为字符。此方法将以下内容识别为行终止符:
-
\u000D
然后是\u000A
,\u000A
RETURN,然后是LINE FEED -
\u000A
,LINE FEED -
\u000D
,\u000D
RETURN
在将来的版本中可能会识别其他Unicode行终止符。
请注意,此方法适用于在单个操作中方便读取所有行的简单情况。 它不适用于读取大文件。
- 参数
-
path
- 文件的路径 -
cs
- 用于解码的字符集 - 结果
- 文件中的
List
;List
是否可修改是依赖于实现的,因此未指定 - 异常
-
IOException
- 如果从文件读取发生I / O错误或读取格式错误或不可映射的字节序列 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 另请参见:
-
newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
-
-
readAllLines
public static List<String> readAllLines(Path path) throws IOException
从文件中读取所有行。 使用UTF-8
charset
将文件中的字节解码为字符。此方法的工作方式就像调用它等同于计算表达式一样:
Files.readAllLines(path, StandardCharsets.UTF_8)
- 参数
-
path
- 文件的路径 - 结果
- 文件中的
List
;List
是否可修改是否依赖于实现,因此未指定 - 异常
-
IOException
- 如果从文件读取发生I / O错误或读取格式错误或不可映射的字节序列 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 1.8
-
write
public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException
将字节写入文件。options
参数指定文件的创建或打开方式。 如果不存在任何选项,则此方法的工作原理犹如CREATE
,TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者最初将现有的regular-file
截断为0
。 字节数组中的所有字节都写入文件。 该方法确保在写入所有字节(或抛出I / O错误或其他运行时异常)时关闭文件。 如果发生I / O错误,则可能在创建或截断文件之后,或者在将一些字节写入文件之后执行此操作。用法示例 :默认情况下,该方法会创建新文件或覆盖现有文件。 假设您想要将字节附加到现有文件:
Path path = ... byte[] bytes = ... Files.write(path, bytes, StandardOpenOption.APPEND);
- 参数
-
path
- 文件的路径 -
bytes
- 包含要写入的字节的字节数组 -
options
- 指定文件打开方式的选项 - 结果
- 路径
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果写入或创建文件时发生I / O错误 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。
-
write
public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) throws IOException
将文本行写入文件。 每行都是一个char序列,并按顺序写入文件,每行由平台的行分隔符终止,由系统属性line.separator
定义。 使用指定的字符集将字符编码为字节。options
参数指定文件的创建或打开方式。 如果不存在任何选项,则此方法的工作原理犹如CREATE
,TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者最初将现有regular-file
截断为0
。 该方法确保在写入所有行(或抛出I / O错误或其他运行时异常)时关闭文件。 如果发生I / O错误,则可能在创建或截断文件之后,或者在将一些字节写入文件之后执行此操作。- 参数
-
path
- 文件的路径 -
lines
- 迭代char序列的对象 -
cs
- 用于编码的字符集 -
options
- 指定文件打开方式的选项 - 结果
- 路径
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果写入或创建文件时发生I / O错误,或者无法使用指定的字符集对文本进行编码 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。
-
write
public static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options) throws IOException
将文本行写入文件。 使用UTF-8
charset
将字符编码为字节。此方法的工作方式就像调用它等同于计算表达式一样:
Files.write(path, lines, StandardCharsets.UTF_8, options);
- 参数
-
path
- 文件的路径 -
lines
- 迭代char序列的对象 -
options
- 指定文件打开方式的选项 - 结果
- 路径
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果写入或创建文件时发生I / O错误,或者文本无法编码为UTF-8
-
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写入权限。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 从以下版本开始:
- 1.8
-
writeString
public static Path writeString(Path path, CharSequence csq, OpenOption... options) throws IOException
写一个CharSequence到一个文件。 使用UTF-8
charset
将字符编码为字节。此方法等效于:
writeString(path, test, StandardCharsets.UTF_8, options)
- 参数
-
path
- 文件的路径 -
csq
-csq
的CharSequence -
options
- 指定文件打开方式的选项 - 结果
- 路径
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果写入或创建文件时发生I / O错误,或者无法使用指定的字符集对文本进行编码 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 从以下版本开始:
- 11
-
writeString
public static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption... options) throws IOException
将CharSequence写入文件。 使用指定的charset将字符编码为字节。所有字符都按原样写入,包括char序列中的行分隔符。 没有添加额外的字符。
options
参数指定文件的创建或打开方式。 如果不存在任何选项,则此方法的工作原理犹如CREATE
,TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开文件进行写入,如果文件不存在则创建文件,或者最初将现有regular-file
截断为0
。- 参数
-
path
- 文件的路径 -
csq
-csq
的CharSequence -
cs
- 用于编码的字符集 -
options
- 指定文件打开方式的选项 - 结果
- 路径
- 异常
-
IllegalArgumentException
- 如果options
包含无效的选项组合 -
IOException
- 如果写入或创建文件时发生I / O错误,或者无法使用指定的字符集对文本进行编码 -
UnsupportedOperationException
- 如果指定了不受支持的选项 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写访问权。 如果使用DELETE_ON_CLOSE
选项打开文件,则调用checkDelete
方法来检查删除访问。 - 从以下版本开始:
- 11
-
list
public static Stream<Path> list(Path dir) throws IOException
返回一个延迟填充的Stream
,其元素是目录中的条目。 列表不是递归的。流的元素是
Path
对象,通过resolving
获得对dir
的目录条目的名称。 某些文件系统维护到目录本身和目录的父目录的特殊链接。 不包括代表这些链接的条目。流是弱一致的 。 它是线程安全的,但在迭代时不会冻结目录,因此它可能(或可能不)反映从此方法返回后发生的目录的更新。
返回的流包含对打开目录的引用。 关闭流关闭目录。
在封闭流上操作的行为就像已到达流的末尾一样。 由于预读,在流关闭之后可以返回一个或多个元素。
如果在返回此方法后访问目录时抛出了
IOException
,则它将包装在UncheckedIOException
中 ,该方法将从导致访问的方法中抛出。- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后立即关闭流的打开目录。
- 参数
-
dir
- 目录的路径 - 结果
-
Stream
描述了目录的内容 - 异常
-
NotDirectoryException
- 如果无法以其他方式打开文件,因为它不是目录 (可选的特定异常) -
IOException
- 如果在打开目录时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对目录的读访问权。 - 从以下版本开始:
- 1.8
- 另请参见:
-
newDirectoryStream(Path)
-
walk
public static Stream<Path> walk(Path start, int maxDepth, FileVisitOption... options) throws IOException
通过遍历以给定起始文件为根的文件树,返回Stream
,其中包含Path
。 文件树被遍历深度优先 ,在流中的元素是Path
个使得获得仿佛对象resolving
的相对路径对start
。stream
在消耗元素时stream
文件树。 返回的Stream
保证至少有一个元素,即起始文件本身。 对于访问的每个文件,流尝试读取其BasicFileAttributes
。 如果文件是目录并且可以成功打开,则目录中的条目及其后代将在遇到它们时跟随流中的目录。 访问完所有条目后,将关闭该目录。 然后文件树步行继续在目录的下一个兄弟 。流是弱一致的 。 它在迭代时不会冻结文件树,因此它可能(或可能不)反映从此方法返回后发生的文件树更新。
默认情况下,此方法不会自动遵循符号链接。 如果
options
参数包含FOLLOW_LINKS
选项,则遵循符号链接。 当跟踪链接,并且无法读取目标的属性时,则此方法尝试获取链接的BasicFileAttributes
。如果
options
参数包含FOLLOW_LINKS
选项,则流会跟踪访问的目录,以便可以检测到循环。 当目录中的条目是目录的祖先时,就会出现一个循环。 通过记录file-key
目录或文件密钥不可用来完成循环检测,方法是调用isSameFile
方法来测试目录是否与祖先相同。 检测到循环时,将其视为I / O错误,实例为FileSystemLoopException
。maxDepth
参数是要访问的目录的最大级别数。 值0
表示只访问起始文件,除非安全管理器拒绝。 值MAX_VALUE
可用于指示应访问所有级别。安装安全管理器并拒绝访问文件(或目录)时,它将被忽略,不会包含在流中。
返回的流包含对一个或多个打开目录的引用。 关闭流关闭目录。
如果在返回此方法后访问目录时抛出了
IOException
,它将被包装在UncheckedIOException
中 ,该方法将从导致访问的方法中抛出。- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后,流的打开目录会立即关闭。
- 参数
-
start
- 起始文件 -
maxDepth
- 要访问的最大目录级别数 -
options
- 用于配置遍历的选项 - 结果
-
Stream
的Path
- 异常
-
IllegalArgumentException
- 如果maxDepth
参数为负数 -
SecurityException
- 如果安全管理器拒绝访问起始文件。 对于默认提供程序,将调用checkRead
方法来检查对目录的读访问权。 -
IOException
- 如果在访问起始文件时引发I / O错误。 - 从以下版本开始:
- 1.8
-
walk
public static Stream<Path> walk(Path start, FileVisitOption... options) throws IOException
通过遍历以给定起始文件为根的文件树,返回Stream
,其中包含Path
。 文件树被遍历深度优先 ,在流中的元素是Path
个使得获得仿佛对象resolving
的相对路径对start
。此方法的工作方式就像调用它等同于计算表达式一样:
walk(start, Integer.MAX_VALUE, options)
返回的流包含对一个或多个打开目录的引用。 关闭流关闭目录。
- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后,流的打开目录会立即关闭。
- 参数
-
start
- 起始文件 -
options
- 用于配置遍历的选项 - 结果
-
Stream
ofPath
- 异常
-
SecurityException
- 如果安全管理器拒绝访问起始文件。 对于默认提供程序,将调用checkRead
方法来检查对目录的读访问权。 -
IOException
- 如果在访问起始文件时引发I / O错误。 - 从以下版本开始:
- 1.8
- 另请参见:
-
walk(Path, int, FileVisitOption...)
-
find
public static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, FileVisitOption... options) throws IOException
通过搜索以给定起始文件为根的文件树中的文件,返回Stream
,其中包含Path
。此方法以完全按照
walk
方法指定的方式遍历文件树。 对于遇到的每个文件,给定的BiPredicate
调用其Path
和BasicFileAttributes
。 所述Path
对象被获得为如果由resolving
的相对路径对start
,并且仅包含在返回的Stream
如果BiPredicate
返回true。 比较主叫filter
上Stream
通过返回walk
方法,这个方法可以是通过避免冗余检索更有效BasicFileAttributes
。返回的流包含对一个或多个打开目录的引用。 关闭流关闭目录。
如果在从此方法返回后访问目录时抛出了
IOException
,则它将包装在UncheckedIOException
中 ,该方法将从导致访问发生的方法中抛出。- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后,流的打开目录会立即关闭。
- 参数
-
start
- 起始文件 -
maxDepth
- 要搜索的最大目录级别数 -
matcher
- 用于确定文件是否应包含在返回的流中的函数 -
options
- 用于配置遍历的选项 - 结果
-
Stream
的Path
- 异常
-
IllegalArgumentException
- 如果maxDepth
参数为负数 -
SecurityException
- 如果安全管理器拒绝访问起始文件。 对于默认提供程序,将调用checkRead
方法来检查对目录的读访问权。 -
IOException
- 如果在访问起始文件时引发I / O错误。 - 从以下版本开始:
- 1.8
- 另请参见:
-
walk(Path, int, FileVisitOption...)
-
lines
public static Stream<String> lines(Path path, Charset cs) throws IOException
从文件中读取所有行作为Stream
。 与readAllLines
不同,此方法不会将所有行读取到List
,而是在流消耗时延迟填充。使用指定的字符集将文件中的字节解码为字符,并支持
readAllLines
指定的相同行终止符。返回的流包含对打开文件的引用。 关闭流将关闭该文件。
在执行终端流操作期间不应修改文件内容。 否则,终端流操作的结果是未定义的。
此方法返回后,从读取文件或读取格式错误或不可映射的字节序列时发生的任何后续I / O异常都包含在
UncheckedIOException
中 ,该方法将从Stream
方法抛出,导致读取发生。 如果在关闭文件时抛出IOException
,它也会被包装为UncheckedIOException
。- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后立即关闭流的打开文件。
- Implementation Note:
- 此实现支持的标准字符集良好的并行流性能
UTF-8
,US-ASCII
和ISO-8859-1
。 这种行优化字符集具有以下属性:当随机访问文件的字节时,换行符('\ n')或回车符('\ r')的编码字节可以从其他编码字符中有效地识别。对于非线优化字符集,流源的分裂器具有较差的分裂属性,类似于与迭代器关联的分裂器或与从
BufferedReader.lines()
返回的流相关联的分裂器 。 分裂性能差可能导致并行流性能差。对于行优化字符集,流源的spliterator具有良好的拆分属性,假设文件包含常规的行序列。 良好的分裂特性可以产生良好的并行流性能。 用于线优化字符集的分裂器利用字符集属性(换行或回车是有效可识别的),使得在分割时它可以将所覆盖的线的数量近似地分成两半。
- 参数
-
path
- 文件的路径 -
cs
- 用于解码的字符集 - 结果
- 文件中的
Stream
- 异常
-
IOException
- 如果打开文件时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 1.8
- 另请参见:
-
readAllLines(Path, Charset)
,newBufferedReader(Path, Charset)
,BufferedReader.lines()
-
lines
public static Stream<String> lines(Path path) throws IOException
从文件中读取所有行作为Stream
。 使用UTF-8
charset
将文件中的字节解码为字符。返回的流包含对打开文件的引用。 关闭流将关闭该文件。
在执行终端流操作期间不应修改文件内容。 否则,终端流操作的结果是未定义的。
此方法的工作方式就像调用它等同于计算表达式一样:
Files.lines(path, StandardCharsets.UTF_8)
- API Note:
- 必须在try-with-resources语句或类似的控制结构中使用此方法,以确保在流的操作完成后立即关闭流的打开文件。
- 参数
-
path
- 文件的路径 - 结果
- 文件中的
Stream
- 异常
-
IOException
- 如果打开文件时发生I / O错误 -
SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead
方法来检查对该文件的读访问权。 - 从以下版本开始:
- 1.8
-
-