• 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());  //可用大小

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

     1     //只能是文件夹
     2         Path path=Paths.get("D:\二次元");
     3         //列出该文件夹下所有子文件、子文件夹的路径。
     4         Files.list(path).forEach(pathItem -> System.out.println(pathItem));   //pathItem代表一个子文件/文件夹的Path对象
     5         
     6         /*
     7         D:二次元a.png
     8         D:二次元c.png
     9         D:二次元q.png
    10         D:二次元	est
    11          */

    读取文本文件的所有行:

    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<String>  Files.readAllLines(Path  path)   //读取所有的行,以LIst<String>形式返回,一行就是一个String类型的元素。只能是文本文件
    • List<String>  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。
  • 相关阅读:
    Principle of Computing (Python)学习笔记(5) BFS Searching + Zombie Apocalypse
    《Java从入门到精通》src9-25
    《Java从入门到精通》src0-8
    windows查看某个端口被谁占用
    css selector: xpath:
    awk 正则表达式
    Centos系统各种日志存详解
    mysql日志文件
    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry &#39;xxx&#39; for key &#39;PRIMARY&#39;
    递归函数时间复杂度分析
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10941419.html
Copyright © 2020-2023  润新知