public final class Files extends Object
在大多数情况下,这里定义的方法将委托给相关的文件系统提供程序来执行文件操作。
Modifier and Type | Method and Description |
---|---|
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(Path dir, String prefix, FileAttribute<?>... attrs)
在指定的目录中创建一个新目录,使用给定的前缀生成其名称。
|
static Path |
createTempDirectory(String prefix, FileAttribute<?>... attrs)
在默认临时文件目录中创建一个新目录,使用给定的前缀生成其名称。
|
static Path |
createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)
在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
|
static Path |
createTempFile(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> |
getFileAttributeView(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 ,其元素是
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, DirectoryStream.Filter<? super Path> filter)
打开一个目录,返回一个 DirectoryStream 来迭代目录中的条目。
|
static DirectoryStream<Path> |
newDirectoryStream(Path dir, String glob)
打开一个目录,返回一个 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> |
readAttributes(Path path, 类<A> type, LinkOption... options)
读取文件的属性作为批量操作。
|
static Map<String,Object> |
readAttributes(Path path, String attributes, LinkOption... options)
读取一组文件属性作为批量操作。
|
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, FileVisitOption... options)
返回一个
Stream ,它通过
Path 根据给定的起始文件的文件树懒惰地填充
Path 。
|
static Stream<Path> |
walk(Path start, int maxDepth, 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)
将文本行写入文件。
|
public static InputStream newInputStream(Path path, OpenOption... options) throws IOException
mark
或reset
方法。
流可以安全地访问多个并发线程。
阅读从文件开头开始。
返回的流是否异步可关闭和/或可中断是高度文件系统提供程序特定的,因此未指定。
options
参数确定文件的打开方式。 如果没有选项存在,则相当于使用READ
选项打开文件。 除了READ
选项之外,实现还可以支持额外的实现特定选项。
path
- 要打开文件的路径
options
- 指定文件打开方式的选项
IllegalArgumentException
- 如果指定了无效的选项组合
UnsupportedOperationException
- 如果指定了不支持的选项
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。
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
方法来检查删除访问。
public static SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException
options
参数确定文件的打开方式。 READ
和WRITE
选项确定文件是否应被打开以供读取和/或写入。 如果两个选项(或APPEND
选项)都不存在,则打开该文件进行阅读。 默认情况下,文件开始时读取或写入。
除了READ
和WRITE
,还可能存在以下选项:
APPEND
If this option is present then the file is opened for writing and each invocation of the channel's write
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 the READ
or TRUNCATE_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 the CREATE_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 the close
method. If the close
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[])
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[])
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
方法来检查对该目录的读取访问。
public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException
DirectoryStream
以遍历目录中的条目。
目录流iterator
返回的元素的类型为Path
,每个元素表示目录中的条目。
Path
对象是通过resolving
获得的,目录条目的名称对应于dir
。
迭代器返回的条目通过匹配滤波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
方法来检查对目录的读取访问。
public static DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
DirectoryStream
以遍历目录中的条目。
目录流iterator
返回的元素的类型为Path
,每个元素表示目录中的条目。
Path
对象是通过resolving
获得的,目录条目的名称对应于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
方法被调用以检查对该目录的读取访问。
public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException
在创建文件时, attrs
参数是可选的, 原始地设置为file-attributes
。 每个属性由其name
标识 。 如果数组中包含多个同名的属性,则忽略除最后一个事件之外的所有属性。
path
- 要创建的文件的路径
attrs
- 创建文件时以原子方式设置的文件属性的可选列表
UnsupportedOperationException
- 如果数组包含创建文件时无法原子设置的属性
FileAlreadyExistsException
- 如果该名称的文件已存在
(可选的特殊异常)
IOException
- 如果发生I / O错误或父目录不存在
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则调用
checkWrite
方法来检查对新文件的写入访问。
public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
createDirectories
方法来首先创建所有不存在的父目录。
该attrs
参数是可选file-attributes
创建目录时设置原子。 每个属性由其name
标识 。 如果数组中包含多个同名的属性,则忽略除最后一个事件之外的所有属性。
dir
- 要创建的目录
attrs
- 创建目录时原子设置的文件属性的可选列表
UnsupportedOperationException
- 如果数组包含创建目录时不能以原子方式设置的属性
FileAlreadyExistsException
- 如果无法创建目录,因为该名称的文件已存在
(可选的特殊异常)
IOException
- 如果发生I / O错误或父目录不存在
SecurityException
- 在默认提供程序和安全管理器的情况下,
checkWrite
方法被调用以检查对新目录的写入访问。
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
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
方法以检查对该文件的写入访问。
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
方法被调用以检查对该文件的写入访问。
public static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException
Path
与同一关联FileSystem
为给定的目录。
关于如何构造目录的名称的细节是依赖于实现的,因此不被指定。 在可能的情况下, prefix
用于构建候选名称。
与createTempFile
方法一样,此方法只是临时文件设施的一部分。 A shutdown-hook
或File.deleteOnExit()
机制可用于自动删除目录。
attrs
参数是可选的,当创建目录时可以选择file-attributes
原子。 每个属性由其name
标识 。 如果数组中包含多个同名的属性,则忽略除最后一个事件之外的所有属性。
dir
- 创建目录的目录路径
prefix
- 用于生成目录名称的前缀字符串;
可能是null
attrs
- 创建目录时原子设置的文件属性的可选列表
IllegalArgumentException
- 如果前缀不能用于生成候选目录名称
UnsupportedOperationException
- 如果数组包含创建目录时无法原子设置的属性
IOException
- 如果发生I / O错误或
dir
不存在
SecurityException
- 在默认提供程序和安全管理器的情况下,
checkWrite
方法被调用以在创建目录时检查写访问。
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
方法被调用以在创建目录时检查写访问。
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
方法拒绝对符号链接的路径的写入访问。
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
方法拒绝对链接或现有文件的写入权限。
public static void delete(Path path) throws IOException
实现可能需要检查文件以确定文件是否是目录。 因此,这种方法对于其他文件系统操作可能不是原子的。 如果文件是符号链接,那么符号链接本身而不是链接的最终目标被删除。
如果文件是目录,那么该目录必须为空。 在某些实现中,目录具有创建目录时创建的特殊文件或链接的条目。 在这种实现中,只有特殊条目存在时,目录被认为是空的。 该方法可以使用walkFileTree
方法来删除目录和目录中的所有条目,或者需要的整个文件树 。
在某些操作系统上,当文件打开并被该Java虚拟机或其他程序使用时,可能无法删除文件。
path
- 要删除的文件的路径
NoSuchFileException
- 如果文件不存在
(可选的特殊异常)
DirectoryNotEmptyException
- 如果该文件是目录,并且由于该目录不为空,否则无法删除
(可选的特定异常)
IOException
- 如果发生I / O错误
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则调用
SecurityManager.checkDelete(String)
方法来检查对该文件的删除访问
public static boolean deleteIfExists(Path path) throws IOException
与delete(Path)
方法一样,实现可能需要检查文件以确定文件是否是目录。 因此,这种方法对于其他文件系统操作可能不是原子的。 如果文件是符号链接,那么符号链接本身而不是链接的最终目标被删除。
如果文件是目录,那么该目录必须为空。 在某些实现中,目录具有创建目录时创建的特殊文件或链接的条目。 在这种实现中,只有特殊条目存在时,目录被认为是空的。
在某些操作系统上,当文件打开并被该Java虚拟机或其他程序使用时,可能无法删除文件。
path
- 要删除的文件的路径
true
如果文件被该方法删除;
false
如果文件不存在,则无法删除
DirectoryNotEmptyException
- 如果文件是目录,并且由于目录不为空,否则无法删除
(可选的特定异常)
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
SecurityManager.checkDelete(String)
方法来检查对该文件的删除访问。
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, the last-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, the COPY_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")
。
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 an IOException
. If the move cannot be performed as an atomic file system operation then AtomicMoveNotSupportedException
is thrown. This can arise, for example, when the target location is on a different FileStore
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
方法被调用以检查对源文件和目标文件的写入访问。
public static Path readSymbolicLink(Path link) throws IOException
如果文件系统支持symbolic links,则该方法用于读取链接的目标,如果文件不是符号链接,则会失败。 链接的目标不需要存在。 返回的Path
对象将与与link相同的文件系统相关link
。
link
- 符号链接的路径
Path
链接目标的
Path
对象
UnsupportedOperationException
- 如果实现不支持符号链接
NotLinkException
- 如果目标文件不能被读取,因为该文件不是符号链接
(可选的特殊异常)
IOException
- 如果发生I / O错误
SecurityException
- 如果是默认提供者,并且安装了一个安全管理器,它将检查
FilePermission
已被授予“
readlink
”操作以读取该链接。
public static FileStore getFileStore(Path path) throws IOException
FileStore
。
一旦获得了对FileStore的FileStore
,就具体实现,如果从其获得的返回的FileStore
或FileStoreAttributeView
对象的操作继续依赖于该文件的存在。 特别地,对于文件被删除或移动到不同的文件存储的情况,没有定义行为。
path
- 文件的路径
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下, checkRead
方法被调用以检查对该文件的读取访问,另外它检查RuntimePermission
("getFileStoreAttributes")
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()
public static boolean isHidden(Path path) throws IOException
hidden
属性,则文件被认为是隐藏的。
根据该方法可能需要访问文件系统以确定该文件是否被视为隐藏的实现。
path
- 要测试文件的路径
true
如果该文件被认为是隐藏的
IOException
- 如果发生I / O错误
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用
checkRead
方法来检查对该文件的读取访问。
public static String probeContentType(Path path) throws IOException
此方法使用安装的FileTypeDetector
实现来探测给定文件以确定其内容类型。 调用每个文件类型检测器的probeContentType
,然后调用文件类型。 如果文件被识别,则返回内容类型。 如果任何安装的文件类型检测器无法识别该文件,则会调用系统默认文件类型检测器来猜测内容类型。
给定的Java虚拟机的调用维护一个系统范围的文件类型检测器列表。 安装的文件类型检测器是使用由ServiceLoader
类定义的服务提供者加载工具进行加载的。 使用系统类加载器加载安装的文件类型检测器。 如果无法找到系统类加载器,则使用扩展类加载器; 如果无法找到扩展类加载器,则使用引导类加载器。 通常将文件类型检测器放置在应用程序类路径或扩展目录中的JAR文件中,JAR文件包含资源目录META-INF/services
中名为java.nio.file.spi.FileTypeDetector
的提供程序配置文件,并且该文件列出了一个或多个META-INF/services
的文件,的具体子类的限定名FileTypeDetector
有一个无参数的构造。 如果定位或实例化安装的文件类型检测器的过程失败,则会抛出未指定的错误。 安装提供商所在的订购是具体的实现。
此方法的返回值是由RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies定义的多用途Internet邮件扩展(MIME)内容类型的值的字符串形式。 根据RFC中的语法,字符串保证是可解析的。
path
- 要探测的文件的路径
null
如果不能确定内容类型
IOException
- 如果发生I / O错误
SecurityException
- 如果安装了一个安全管理器,并且它拒绝文件类型检测器实现所需的未指定权限。
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
如果属性视图类型不可用
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
方法来检查对该文件的读取访问。
如果调用此方法来读取安全敏感属性,则可能会调用安全管理器来检查其他权限。
public static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) throws IOException
attribute
参数标识要设置的属性,并采取以下格式:
[ view-name :] attribute-name其中方括号[...]描绘可选组件,字符
':'
代表自身。
视图-name是name
一个的FileAttributeView
标识一组文件属性。 如果未指定,则默认为"basic"
,该文件属性视图的名称标识许多文件系统通用的基本文件属性集。 attribute-name是集合中属性的名称。
options
数组可以用于指示如果文件是符号链接的情况下,如何处理符号链接。 默认情况下,遵循符号链接,并设置链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
使用示例:假设我们要设置DOS“隐藏”属性:
Path path = ...
Files.setAttribute(path, "dos:hidden", true);
path
- 文件的路径
attribute
- 要设置的属性
value
- 属性值
options
- 指示如何处理符号链接的选项
path
参数
UnsupportedOperationException
- 如果属性视图不可用
IllegalArgumentException
- 如果属性名称未指定或无法识别,或者属性值是正确的类型但具有不适当的值
ClassCastException
- 如果属性值不是预期类型,或是包含不是预期类型的元素的集合
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,其checkWrite
方法拒绝对该文件的写入访问。
如果调用此方法来设置安全敏感属性,则可以调用安全管理器以检查其他权限。
public static Object getAttribute(Path path, String attribute, LinkOption... options) throws IOException
attribute
参数标识要读取的属性,并采取以下格式:
[ view-name :] attribute-name其中方括号[...]描绘可选组件,字符
':'
代表自身。
视图-name是name
一个的FileAttributeView
标识一组文件属性。 如果未指定,则默认为"basic"
,该文件属性视图的名称标识了许多文件系统通用的基本文件属性集。 attribute-name是属性的名称 。
options
数组可用于指示如何处理符号链接,以便文件是符号链接的情况。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
使用示例:假设我们需要在支持“ unix
”视图的系统上的文件所有者的用户ID:
Path path = ...
int uid = (Integer)Files.getAttribute(path, "unix:uid");
path
- 文件的路径
attribute
- 要读取的属性
options
- 表示如何处理符号链接的选项
UnsupportedOperationException
- 如果属性视图不可用
IllegalArgumentException
- 如果属性名称未指定或无法识别
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,其checkRead
方法拒绝对该文件的读取访问。
如果调用此方法来读取安全敏感属性,则可以调用安全管理器来检查其他权限。
public static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) throws IOException
attributes
参数标识要读取的属性,并采取以下格式:
[ view-name :] attribute-list其中方括号[...]描绘了可选组件,字符
':'
代表本身。
视图-name是name
一个的FileAttributeView
标识一组文件属性。 如果未指定,则默认为"basic"
,该文件属性视图的名称标识了许多文件系统通用的基本文件属性集。
属性列表组件是要读取的零个或多个属性名称的逗号分隔列表。 如果列表包含值"*"
,则会读取所有属性。 不支持的属性将被忽略,不会显示在返回的映射中。 如果所有属性都被读取为相对于其他文件系统操作的原子操作,则是实现特定的。
下面的例子演示对于可能的值attributes
参数:
"*"
Read all basic-file-attributes
."size,lastModifiedTime,lastAccessTime"
Reads the file size, last modified time, and last access time attributes. "posix:*"
Read all POSIX-file-attributes
."posix:permissions,owner,size"
Reads the POSX file permissions, owner, and file size.
options
阵列可用于指示如何处理符号链接,以便文件是符号链接的情况。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
path
- 文件的路径
attributes
- 要读取的属性
options
- 表示如何处理符号链接的选项
UnsupportedOperationException
- 属性视图是否不可用
IllegalArgumentException
- 如果没有指定属性或指定了无法识别的属性
IOException
- 如果发生I / O错误
SecurityException
- 对于默认提供程序和安全管理器,其checkRead
方法拒绝对该文件的读取访问。
如果调用此方法来读取安全敏感属性,则可能会调用安全管理器来检查其他权限。
public static Set<PosixFilePermission> getPosixFilePermissions(Path path, LinkOption... options) throws IOException
所述path
参数与相关联FileSystem
支持PosixFileAttributeView
。 该属性视图提供对通常与实现便携式操作系统接口(POSIX)系列标准的操作系统使用的文件系统上的文件相关联的文件属性的访问。
options
阵列可用于指示如何处理符号链接,以便文件是符号链接的情况。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
path
- 文件的路径
options
- 指示如何处理符号链接的选项
UnsupportedOperationException
- 如果相关的文件系统不支持
PosixFileAttributeView
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,它拒绝RuntimePermission
("accessUserInformation")或其checkRead
方法拒绝对该文件的读取访问。
public static Path setPosixFilePermissions(Path path, Set<PosixFilePermission> perms) throws IOException
所述path
参数与相关联FileSystem
支持PosixFileAttributeView
。 该属性视图提供对通常与实现便携式操作系统接口(POSIX)系列标准的操作系统使用的文件系统上的文件相关联的文件属性的访问。
path
- 文件的路径
perms
- 新的权限集
UnsupportedOperationException
- 如果相关的文件系统不支持
PosixFileAttributeView
ClassCastException
- 如果集合包含不是类型为
PosixFilePermission
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,它将拒绝RuntimePermission
("accessUserInformation")或其checkWrite
方法拒绝对该文件的写入访问。
public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException
path
参数与支持FileOwnerAttributeView
的文件系统相关联 。 此文件属性视图提供对文件所有者的文件属性的访问。
path
- 文件的路径
options
- 表示如何处理符号链接的选项
UnsupportedOperationException
- 如果相关的文件系统不支持
FileOwnerAttributeView
IOException
- 如果发生I / O错误
SecurityException
- 对于默认提供程序和安全管理器,它将拒绝RuntimePermission
("accessUserInformation")或其checkRead
方法拒绝对该文件的读取访问。
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
public static boolean isSymbolicLink(Path path)
其中要求区分该文件是不是一个符号链接,则文件属性可以与被读取的情况下的I / O异常readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isSymbolicLink()
方法。
path
- 文件的路径
true
如果文件是一个符号链接;
false
如果文件不存在,不是符号链接,或者无法确定文件是否是符号链接。
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,其
checkRead
方法拒绝对该文件的读取访问。
public static boolean isDirectory(Path path, LinkOption... options)
options
阵列可用于指示如何处理符号链接,以便文件是符号链接的情况。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
其中要求区分该文件是不是一个目录,则文件属性可以与被读取的情况下的I / O异常readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isDirectory()
方法。
path
- 要测试文件的路径
options
- 表示如何处理符号链接的选项
true
如果文件是一个目录;
false
如果该文件不存在,不是一个目录,或者该文件是否是目录无法确定。
SecurityException
- 对于默认提供程序和安全管理器,其
checkRead
方法拒绝对该文件的读取访问。
public static boolean isRegularFile(Path path, LinkOption... options)
options
阵列可以用于指示如果文件是符号链接的情况下,如何处理符号链接。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
其中要求区分该文件是不是一个普通文件,则文件属性可以与被读取的情况下的I / O异常readAttributes
方法,并与所测试的文件类型BasicFileAttributes.isRegularFile()
方法。
path
- 文件的路径
options
- 表示如何处理符号链接的选项
true
如果文件是普通文件;
false
如果文件不存在,不是常规文件,或者无法确定该文件是否为常规文件。
SecurityException
- 在默认提供程序的情况下,安装了一个安全管理器,其
checkRead
方法拒绝对该文件的读取访问。
public static FileTime getLastModifiedTime(Path path, LinkOption... options) throws IOException
options
阵列可用于指示如果文件是符号链接的情况下,如何处理符号链接。 默认情况下,遵循符号链接,并读取链接的最终目标的文件属性。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
path
- 文件的路径
options
- 表示如何处理符号链接的选项
FileTime
表示文件最后被修改的时间,或实现特定的缺省时的时间戳,以指示最后修改的时间不被文件系统支持
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,其
checkRead
方法拒绝对该文件的读取访问。
BasicFileAttributes.lastModifiedTime()
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)
public static long size(Path path) throws IOException
path
- 文件的路径
IOException
- 如果发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,其
checkRead
方法拒绝对该文件的读取访问。
BasicFileAttributes.size()
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...)
public static boolean notExists(Path path, LinkOption... options)
options
参数可用于指示如果文件是符号链接的情况下,如何处理符号链接。 默认情况下,遵循符号链接。 如果存在选项NOFOLLOW_LINKS
,则不遵循符号链接。
请注意,此方法不是exists
方法的补充 。 如果无法确定文件是否存在,那么两种方法都将返回false
。 与exists
方法一样,此方法的结果立即过时。 如果此方法指示文件确实存在,则不能保证子序列尝试创建该文件将成功。 在安全敏感应用程序中使用此方法时,请注意。
path
- 要测试文件的路径
options
- 指示如何处理符号链接的选项
true
如果文件不存在;
false
如果文件存在或其存在无法确定
SecurityException
- 在默认提供程序的情况下,
SecurityManager.checkRead(String)
被调用以检查对该文件的读访问。
public static boolean isReadable(Path path)
请注意,该方法的结果已经过时了,不能保证随后尝试打开文件进行读取(甚至可以访问同一个文件)。 在安全敏感应用程序中使用此方法时,请注意。
path
- 要检查的文件的路径
true
如果文件存在且可读;
false
如果文件不存在,读取访问将被拒绝,因为Java虚拟机没有足够的权限,或访问无法确定
SecurityException
- 在默认提供程序和安全管理器的情况下,
checkRead
被调用以检查对该文件的读取访问。
public static boolean isWritable(Path path)
请注意,该方法的结果立即过时,不能保证随后尝试打开文件以进行写入(甚至可以访问同一个文件)。 在安全敏感应用程序中使用此方法时,请注意。
path
- 要检查的文件的路径
true
如果文件存在并且是可写的;
false
如果文件不存在,写入访问将被拒绝,因为Java虚拟机没有足够的权限,或访问无法确定
SecurityException
- 在默认提供程序和安全管理器的情况下,
checkWrite
被调用以检查对该文件的写入访问。
public static boolean isExecutable(Path path)
execute
的适当权限 。
当检查对目录的访问时,语义可能会有所不同。
例如,在UNIX系统上,检查执行访问会检查Java虚拟机是否具有搜索目录以访问文件或子目录的权限。
根据实现,此方法可能需要读取文件权限,访问控制列表或其他文件属性,以便检查对文件的有效访问。 因此,相对于其他文件系统操作,该方法可能不是原子的。
请注意,该方法的结果是立即过时的,不能保证后续的执行该文件的尝试将成功(甚至可以访问相同的文件)。 在安全敏感应用程序中使用此方法时,请注意。
path
- 要检查的文件的路径
true
如果文件存在并且是可执行的;
false
如果文件不存在,执行访问将被拒绝,因为Java虚拟机没有足够的权限,或访问无法确定
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则调用
checkExec
以检查对该文件的执行访问。
public static Path walkFileTree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor) throws IOException
此方法将以一个给定的起始文件为根。 文件树遍历深度优先与给定FileVisitor
调用所遇到的每个文件。 访问树中的所有可访问文件时,文件树遍历都完成,或访问方法返回TERMINATE
的结果。 由于IOException
,未捕获的错误或运行时异常,访问方法终止,则遍历将终止,并将错误或异常传播到此方法的调用者。
对于遇到的每个文件,此方法尝试读取其BasicFileAttributes
。 如果该文件不是目录,那么visitFile
方法将使用文件属性进行调用。 如果文件属性无法读取,由于I / O异常,那么visitFileFailed
方法将被调用与I / O异常。
在文件是目录,目录无法打开的情况下, visitFileFailed
方法将使用I / O异常进行调用,之后,文件树在步骤继续,默认情况下在目录的下一个兄弟节点。
在目录成功打开的地方,目录中的条目及其后代被访问。 当所有条目被访问,或在目录的迭代期间发生I / O错误时,目录被关闭,并且访问者的postVisitDirectory
方法被调用。 默认情况下,文件树步行继续在目录的下一个兄弟节点。
默认情况下,此方法不会自动跟随符号链接。 如果options
参数包含FOLLOW_LINKS
选项,则遵循符号链接。 当跟随链接时,目标的属性无法读取,则此方法会尝试获取链接的BasicFileAttributes
。 如果它们可以被读取,则visitFile
方法被调用与该链接的属性(否则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错误
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错误
public static BufferedReader newBufferedReader(Path path, Charset cs) throws IOException
BufferedReader
,可以用来以有效的方式从文件读取文本。
使用指定的字符集将文件中的字节解码为字符。
阅读从文件开头开始。
从文件中读取的Reader
方法抛出IOException
如果读取IOException
不正确或不可映射的字节序列。
path
- 文件的路径
cs
- 用于解码的字符集
IOException
- 如果打开文件时发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。
readAllLines(java.nio.file.Path, java.nio.charset.Charset)
public static BufferedReader newBufferedReader(Path path) throws IOException
BufferedReader
以高效的方式从文件读取文本。
使用UTF-8
charset
将文件中的字节解码为字符 。
这个方法的工作原理就像调用它相当于评估表达式:
Files.newBufferedReader(path, StandardCharsets.UTF_8)
path
- 文件的路径
IOException
- 如果打开文件时出现I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。
public static BufferedWriter newBufferedWriter(Path path, Charset cs, OpenOption... options) throws IOException
BufferedWriter
,可以用来以有效的方式将文本写入文件。
options
参数指定文件的创建或打开方式。
如果不存在任何选项,则此方法的工作原理犹如CREATE
, TRUNCATE_EXISTING
和WRITE
个选项都存在。
换句话说,它打开写入文件,创建文件(如果不存在),或者最初将现有的regular-file
截断为大小为0
如果存在)。
Writer
写入文本的方法抛出IOException
如果文本无法使用指定的字符集进行编码。
path
- 文件的路径
cs
- 用于编码的字符集
options
- 指定文件打开方式的选项
IOException
- 如果打开或创建文件时出现I / O错误
UnsupportedOperationException
- 如果指定了不支持的选项
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用
checkWrite
方法来检查对该文件的写入访问。
write(Path,Iterable,Charset,OpenOption[])
public static BufferedWriter newBufferedWriter(Path path, OpenOption... options) throws IOException
BufferedWriter
以高效的方式将文本写入文件。
使用UTF-8
charset
将文本编码为字节。
这个方法的工作原理就像调用它相当于评估表达式:
Files.newBufferedWriter(path, StandardCharsets.UTF_8, options)
path
- 文件的路径
options
- 指定文件打开方式的选项
IOException
- 如果打开或创建文件时出现I / O错误
UnsupportedOperationException
- 如果指定了不受支持的选项
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkWrite
方法来检查对该文件的写入访问。
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
包含不支持的副本选项
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用checkWrite
方法来检查对该文件的写入访问。
在指定REPLACE_EXISTING
选项的地方,调用安全管理器的checkDelete
方法来检查现有文件是否可以被删除。
public static long copy(Path source, OutputStream out) throws IOException
如果从文件读取或写入输出流发生I / O错误,则可能会在读取或写入某些字节后执行此操作。 因此,输出流可能处于不一致状态。 强烈建议如果发生I / O错误,则会立即关闭输出流。
此方法可能无限期地写入输出流(或从文件读取)。 输出流异步关闭或在复制期间线程中断的情况的行为是高度输出流和文件系统提供者特定的,因此未指定。
请注意,如果给定的输出流为Flushable
,则此方法完成后可能需要调用其flush
方法,以便刷新任何缓冲输出。
source
- 文件的路径
out
- 要写入的输出流
IOException
- 读/写时是否发生I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,调用
checkRead
方法来检查对该文件的读取访问。
public static byte[] readAllBytes(Path path) throws IOException
请注意,此方法适用于将所有字节读入字节数组的简单情况。 它不是用于阅读大文件。
path
- 文件的路径
IOException
- 如果从流中读取I / O错误
OutOfMemoryError
- 如果无法分配所需大小的数组,例如文件大于
2GB
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。
public static List<String> readAllLines(Path path, Charset cs) throws IOException
该方法将以下内容识别为行终止符:
\u000D
后跟\u000A
, \u000A
返回后跟LINE FEED \u000A
,LINE FEED \u000D
,运输退货 其他Unicode行终止符可能会在将来的版本中被识别。
请注意,此方法适用于在单个操作中读取所有行的简单情况。 它不是用于阅读大文件。
path
- 文件的路径
cs
- 用于解码的字符集
List
;
List
是否可List
是否依赖于实现,因此未指定
IOException
- 如果从文件读取I / O错误或读取格式不正确或不可映射的字节序列
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。
newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
public static List<String> readAllLines(Path path) throws IOException
UTF-8
charset
将文件中的字节解码为字符 。
这个方法的工作原理就像调用它相当于评估表达式:
Files.readAllLines(path, StandardCharsets.UTF_8)
path
- 文件的路径
List
;
List
是否可List
是否依赖于实现,因此未指定
IOException
- 如果从文件读取I / O错误或读取格式不正确或不可映射的字节序列
SecurityException
- 在默认提供程序和安全管理器的情况下,
checkRead
方法被调用以检查对该文件的读取访问。
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
- 指定文件打开方式的选项
IOException
- 如果在写入或创建文件时出现I / O错误
UnsupportedOperationException
- 如果指定了不支持的选项
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用
checkWrite
方法来检查对该文件的写入访问。
public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) throws IOException
line.separator
定义的顺序将每行由平台的行分隔line.separator
。
使用指定的字符集将字符编码为字节。
options
参数指定文件的创建或打开方式。 如果不存在任何选项,则此方法的工作原理犹如CREATE
, TRUNCATE_EXISTING
和WRITE
个选项都存在。 换句话说,它打开写入文件,创建文件(如果不存在),或者最初将现有的regular-file
截断到大小为0
。 该方法确保在写入所有行时(或抛出I / O错误或其他运行时异常)时关闭文件。 如果发生I / O错误,则可能会在文件创建或截断后或在将某些字节写入文件之后执行此操作。
path
- 文件的路径
lines
- 一个遍历char序列的对象
cs
- 用于编码的字符集
options
- 指定文件打开方式的选项
IOException
- 如果在写入或创建文件时发生I / O错误,或者文本无法使用指定的字符集进行编码
UnsupportedOperationException
- 如果指定了不受支持的选项
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkWrite
方法来检查对该文件的写入访问。
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
- 指定文件打开方式的选项
IOException
- 如果在写入或创建文件时出现I / O错误,或者文本无法编码为
UTF-8
UnsupportedOperationException
- 如果指定了不受支持的选项
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用
checkWrite
方法来检查对该文件的写入访问。
public static Stream<Path> list(Path dir) throws IOException
Stream
,其元素是Stream
中的条目。
列表不是递归的。
流的元素是Path
个对象,如resolving
所示,目录条目的名称对应于dir
。 某些文件系统维护目录本身和目录的父目录的特殊链接。 不包括代表这些链接的条目。
流量弱一致 。 它是线程安全的,但是在迭代时不冻结目录,因此它可能(或可能不)反映从此方法返回后发生的目录的更新。
返回的流封装了一个DirectoryStream
。 如果需要的文件系统资源的及时处置,该try
-with资源结构应该被用来确保数据流的close
流操作完成后调用方法。
在封闭的流上运行,就像流已经达到一样。 由于预读,流已关闭后可能会返回一个或多个元素。
如果在此方法返回后访问目录时抛出了一个IOException
,它将被包装在UncheckedIOException
中,该引用将从导致访问的方法抛出。
dir
- 目录的路径
Stream
目录的内容
NotDirectoryException
- 如果文件无法打开,因为它不是目录
(可选的特殊异常)
IOException
- 打开目录时是否发生I / O错误
SecurityException
- 如果是默认提供程序,并安装了安全管理器,则会调用
checkRead
方法来检查对该目录的读取访问。
newDirectoryStream(Path)
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
的值来表示应该访问所有级别。
当一个安全管理器被安装并且它拒绝访问一个文件(或目录)时,它被忽略,不包括在流中。
返回的流封装一个或多个DirectoryStream
s。 如果需要的文件系统资源的及时处置,该try
-with资源结构应该被用来确保数据流的close
流操作完成后调用方法。 在封闭的流上运行将导致IllegalStateException
。
如果在此方法返回后访问目录时抛出了一个IOException
,它将被包裹在UncheckedIOException
中,该引用将导致访问发生的方法。
start
- 起始文件
maxDepth
- 要访问的目录级别的最大数量
options
- 配置遍历的选项
Stream
的Path
IllegalArgumentException
- 如果
maxDepth
参数为负
SecurityException
- 如果安全管理器拒绝对起始文件的访问。
在默认提供程序的情况下,将调用checkRead
方法来检查对该目录的读取访问。
IOException
- 如果在访问起始文件时抛出I / O错误。
public static Stream<Path> walk(Path start, FileVisitOption... options) throws IOException
Stream
,它通过走根据给定起始文件的文件树懒惰地填充Path
。
文件树以深度优先的方式遍历 ,流中的元素是Path
对象,如resolving
所示 ,相对路径为start
。
这个方法的工作原理就像调用它相当于评估表达式:
换句话说,它访问文件树的所有级别。walk(start, Integer.MAX_VALUE, options)
返回的流封装一个或多个DirectoryStream
s。 如果需要的文件系统资源的及时处置,该try
-with资源结构应该被用来确保数据流的close
流操作完成后调用方法。 在封闭的流上运行将导致IllegalStateException
。
start
- 起始文件
options
- 配置遍历的选项
Stream
的Path
SecurityException
- 如果安全管理员拒绝访问起始文件。
在默认提供程序的情况下, checkRead
方法被调用来检查对该目录的读访问。
IOException
- 如果在访问起始文件时抛出I / O错误。
walk(Path, int, FileVisitOption...)
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
,如果BiPredicate
返回true,则仅包含在返回的Stream
中 。 比较88423350877594在Stream
返回的walk
方法,这种方法可能会更有效地避免BasicFileAttributes的冗余BasicFileAttributes
。
返回的流封装一个或多个DirectoryStream
s。 如果需要及时处理文件系统资源,则应使用try
-with-resources构造来确保在流操作完成后调用流的close
方法。 在封闭的流上运行将导致IllegalStateException
。
如果在从此方法返回后访问目录时抛出IOException
,它将被包裹在UncheckedIOException
中 ,这将导致导致访问的方法。
start
- 起始文件
maxDepth
- 要搜索的目录级别的最大数量
matcher
- 用于决定文件是否应包含在返回的流中的函数
options
- 配置遍历的选项
Stream
的Path
IllegalArgumentException
- 如果
maxDepth
参数为负
SecurityException
- 如果安全管理器拒绝访问起始文件。
在默认提供程序的情况下,调用checkRead
方法来检查对目录的读取访问。
IOException
- 如果在访问起始文件时抛出I / O错误。
walk(Path, int, FileVisitOption...)
public static Stream<String> lines(Path path, Charset cs) throws IOException
Stream
。
与readAllLines
不同,此方法不会将所有行都读入List
,而是在流消耗时懒惰地填充。
从该文件的字节被解码为通过指定字符集,并且在同一行终止由指定的字符readAllLines
被支持。
在此方法返回后,从文件读取或读取错误格式或不可映射字节序列时发生的任何后续I / O异常都将包含在UncheckedIOException
中 ,将从引起读取的Stream
方法抛出。 如果关闭文件时抛出一个IOException
,它也被包装成一个UncheckedIOException
。
返回的流封装了一个Reader
。 如果需要及时处理文件系统资源,则应使用try-with-resources构造来确保在流操作完成后调用流的close
方法。
path
- 文件的路径
cs
- 用于解码的字符集
Stream
IOException
- 如果打开文件时出现I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,调用
checkRead
方法来检查对该文件的读取访问。
readAllLines(Path, Charset)
,
newBufferedReader(Path, Charset)
,
BufferedReader.lines()
public static Stream<String> lines(Path path) throws IOException
Stream
。
文件中的字节使用UTF-8
charset
解码成字符 。
这个方法的工作原理就像调用它相当于评估表达式:
Files.lines(path, StandardCharsets.UTF_8)
path
- 文件的路径
Stream
IOException
- 如果打开文件时出现I / O错误
SecurityException
- 在默认提供程序和安全管理器的情况下,将调用
checkRead
方法来检查对该文件的读取访问。