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对象(绝对路径)。ui

 

  • createTempDirectory(String prefix)    //在OS的临时文件夹中建立一个临时文件夹。
  • createTempDirectory(Path  dir, String prefix)    //在指定的目录下建立一个临时文件夹

  文件夹名:前缀+一个系统生成的随机数编码

 

 

 

  • Files.copy(Path src, Path  target)    //复制文件,若是存在同名的目标文件,会报错。
  • Files.copy(Path  src, Path  target , StandardCopyOption.REPLACE_EXISTING)   //若是存在同名的目标文件,会替换

  只能是文件,不能是文件夹,要复制文件夹须要递归复制子文件、子文件夹。目标文件名可与原文件名不一样。spa

 

  • Files.move(Path  src, Path  target)    //剪切,若是目标已存在,会报错
  • Files.move(Path  src, Path  target , StandardCopyOption.REPLACE_EXISTING)    //若是目标已存在,会替换。虽然是move,但常量仍是是StandardCopyOption.REPLACE_EXISTING。

  能够是文件、文件夹。code

 

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

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

 

 

 

  • 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:\二次元\test
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。
相关文章
相关标签/搜索