这是我参与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的方法。
示例