这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战
Files
是Java1.7 在nio
中新增的专门用于处理文件和目录的工具类。Files
和Path
配合可以很方便的完成对文件/目录的创建、读取、修改、删除等操作。
检查文件/目录是否存在
exists
和notExists
方法用来检查Path
指代的文件/目录是否存在,参数LinkOption
表示是否关注链接,可以不传
示例
exists
:文件/目录存在时返回true
notExists
:文件/目录不存在时返回true
创建文件/目录
Files
中用于创建文件/目录的方法都使用create开头,返回值是Path
。参数FileAttribute (文件的属性如读写权限)
是可选参数可以不传, 如下图所示:
示例
createDirectory
; 新建一个目录
createDirectories
:新建多级目录
createTempDirectory
:在指定目录下创建根据前缀生成的名称的新临时目录
createFile
: 新建文件
createTempFile
: 新建临时文件
删除文件/目录
删除文件可以使用delete
和deleteIfExists
方法。delete
和deleteIfExists
不同的是当要删除的对象不存在时会返回false
示例
delete
:删除文件, 文件不存在时抛出异常
deleteIfExists
:如果文件存在就删除返回true,不存在返回false
列出子目录/文件
列出子目录/文件主要使用list
和walk
。list
和walk
的区别在于list
只返回直属的子目录或文件,walk
会返回所有的子目录或文件
示例
list
:返回直属的子目录或文件的Stream
walk
:返回所有的子目录或文件的Stream
查找文件
查找文件可以使用find
方法。find
方法用于在查找指定目录下符合规则的文件,参数BiPredicate
是个函数式接口,用于指定要查找文件满足的规则
示例
复制文件/目录
可以使用copy
方法复制文件或目录。copy
有两个重载的方法用于将InputStream
复制到目标文件中,或将文件中的数据复制到OutputStream
示例
- 复制文件/目录
- 将InputStream中的数据复制到目标文件中,目标文件的父目录不存在时会抛出异常
- 将本地文件中的内容复制到
OutputStream
移动文件
move
方法被用来移动文件文件,和copy
方法一样move
只能移动Path
指定的文件,即Path
是目录时不会移动Path
下面的子文件和目录
示例
向文件中写入内容
向文件中写入数据可以使用write
方法。
OpenOption
参数不存在时,会清除原内容
示例
- 以字节的形式写入
- 写入多行数据
- 写入多行数据,指定字符的编码,写入方式为追加
读取文件内容
从文件中读取数据的方法有lines
、readAllLines
和readAllBytes
。lines
和readAllLines
默认使用UTF-8字符集。
示例
lines
:读取所有数据,返回一个Stream
readAllLines
: 读取所有数据,返回一个List
readAllBytes
: 读取所有数据,返回一个字节数组
转成输入、输出流、Channel
Files
也提供了将Path
指代的文件转成输入、输出流和Channel的方法。
示例
近期评论