Java NIO.2 Files类的常用方法

Files类是一个工具类,提供了大量的静态方法来操作文件、文件夹。

Files类常用方法:

long size(Path path) //返回文件大小

boolean isDirectory(Path path) //是否是文件夹
boolean isExecutable(Path path) //是否是可执行文件
boolean isHidden(Path path) //是否是隐藏的
boolean exists(Path path) //该文件/文件夹是否存在
boolean notExists(Path path) //是否不存在
boolean isReadable(Path path) //是否可读
boolean isWritable(Path path) //是否可写

createFile(Path filePath) //创建文件,只能是文件,不能是文件夹。如果已存在同名文件,会报错。
createDirectory(Path dirPath) //创建文件夹。如果已存在同名文件夹,会报错

createTempFile(String prefix, String suffix) //在OS的临时文件夹中创建一个临时文件
createTempFile(Path dir, String prefix, String suffix) //在指定的目录下创建一个临时文件
  prefix是文件名前缀,suffix是文件名后缀,一般是扩展名,比如“.zip”。中间会使用系统生成的一个随机数。返回该临时文件的Path对象(绝对路径)。

createTempDirectory(String prefix) //在OS的临时文件夹中创建一个临时文件夹。
createTempDirectory(Path dir, String prefix) //在指定的目录下创建一个临时文件夹
  文件夹名:前缀+一个系统生成的随机数

Files.copy(Path src, Path target) //复制文件,如果存在同名的目标文件,会报错。
Files.copy(Path src, Path target , StandardCopyOption.REPLACE_EXISTING) //如果存在同名的目标文件,会替换
  只能是文件,不能是文件夹,要复制文件夹需要递归复制子文件、子文件夹。目标文件名可与原文件名不同。

Files.move(Path src, Path target) //剪切,如果目标已存在,会报错
Files.move(Path src, Path target , StandardCopyOption.REPLACE_EXISTING) //如果目标已存在,会替换。虽然是move,但常量还是是StandardCopyOption.REPLACE_EXISTING。
  可以是文件、文件夹。

在copy()、move()操作中:如果Path的中间部分路径有不存在的,会报错,并不会自动创建。比如复制一张图片,目标是"D:\test\1.png" ,如果test不存在,会报错。

剪切是一种特殊的复制,先复制,复制完成后再删除原文件/文件夹。

Files.delete(Path path)  //删除文件、空目录。如果不存在,会报错
Files.deleteIfExists(Path path) //存在才删除,不存在时不会报错。
  只能删除文件、空目录。如果该文件夹下包含子文件、子目录,即便子目录是空的,也会报错。

要删除有内容的文件夹,需要递归删除子文件、子文件夹。

查看某个盘的大小:

1 Path path=Paths.get(“D;\”);
2 FileStore store=Files.getFileStore(path);
3 System.out.println(store.getTotalSpace()); //总大小。字节数
4 System.out.println(store.getUsableSpace()); //可用大小

获取某个文件夹下所有子文件、子文件夹的路径:

//只能是文件夹
Path path=Paths.get(“D:\二次元”);
//列出该文件夹下所有子文件、子文件夹的路径。
Files.list(path).forEach(pathItem -> System.out.println(pathItem)); //pathItem代表一个子文件/文件夹的Path对象

    /*
    D:\二次元\a.png
    D:\二次元\c.png
    D:\二次元\q.png
    D:\二次元\test
     */

读取文本文件的所有行:

1 //只能是文本文件
2 Path path=Paths.get(“D:\二次元\1.txt”);
3 //读取所有的行,逐行输出
4 Files.lines(path).forEach(line->System.out.println(line)); //line代表一行
5 //可指定解码字符集。只能是Charset对象,不能是String。
6 // Files.lines(path,Charset.forName(“GBK”)).forEach(line->System.out.println(line));

读取文件内容:

String Files.readString(Path path) //读取所有文本,以String形式返回。会读取换行符。只能是文本文件
String Files.readString(Path path, Charset charset) //可指定解码字符集

List Files.readAllLines(Path path) //读取所有的行,以LIst形式返回,一行就是一个String类型的元素。只能是文本文件
List Files.readAllLines(Path path, Charset charset) //可指定解码字符集

byte[] Files.readAllBytes(Path path) //读取文件所有数据,以字节数组形式返回。文件可以是任意类型。

写入文件:

Files.write(Path path, byte[] bytes) //写入一个byte[]
Files.writeString(Path path, CharSequence cs) //写入一个字符序列,可以是String、StringBuffer、StringBuilder、Char[]
Files.writeString(Path path, CharSequence cs, Charset charset) //指定编码字符集

以上3个方法均可在末尾指定参数个数可变的的可选参数OpenOption,常用的值:

StandardOpenOption.APPEND 追加
StandardOpenOption.READ 读
StandardOpenOption.WRITE 写
StandardOpenOption.SYNC 同步写到磁盘文件
StandardOpenOption.DELETE_ON_CLOSE 关闭时删除文件
参数个数可变,可同时使用多个预定义的值,放在参数表最后面,以逗号分隔。

创建对象:

Files.newBufferedReader(Path path);
Files.newBufferedReader(Path path,Charset charset); //可指定解码字符集

Files.newBufferedWriter(Path path);
Files.newBufferedWriter(Path path, Charset charset); //可指定编码字符集
  以上2个方法均可指定参数个数可变的OpenOption。

Files.newInputStream(Path path);
Files.newOutputStream(Path path);
  以上2个方法均可指定参数个数可变的OpenOption。

原文:https://www.cnblogs.com/chy18883701161/archive/2019/05/29/10941419.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值