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)    //存在才删除,不存在时不会报错。

  只能删除文件、空目录。如果该文件夹下包含子文件、子目录,即便子目录是空的,也会报错。

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

查看某个盘的大小:

      Path path=Paths.get("D;\\");
FileStore store=Files.getFileStore(path);
System.out.println(store.getTotalSpace()); //总大小。字节数
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
*/

读取文本文件的所有行:

     //只能是文本文件
Path path=Paths.get("D:\\二次元\\1.txt");
//读取所有的行,逐行输出
Files.lines(path).forEach(line->System.out.println(line)); //line代表一行
//可指定解码字符集。只能是Charset对象,不能是String。
// 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。

Java NIO.2 Files类的常用方法的更多相关文章

  1. java.util.concurrent.Executors类的常用方法介绍

    Java 线程池 Executors提供了几种线程池实现? 5个,分别如下 1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收 ...

  2. Java NIO之Charset类字符编码对象

    介绍 java中使用Charset来表示编码对象 This class defines methods for creating decoders and encoders and for retri ...

  3. 转载Java NIO中的Files类的使用

    Java NIO中的Files类(java.nio.file.Files)提供了多种操作文件系统中文件的方法. Files.exists() Files.exits()方法用来检查给定的Path在文件 ...

  4. Java NIO之拥抱Path和Files

    Java面试通关手册(Java学习指南)github地址(欢迎star和pull):https://github.com/Snailclimb/Java_Guide 历史回顾: Java NIO 概览 ...

  5. Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  6. Java NIO学习系列七:Path、Files、AsynchronousFileChannel

    相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...

  7. 海纳百川而来的一篇相当全面的Java NIO教程

    目录 零.NIO包 一.Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Exampl ...

  8. Java7 新特性 —— java.nio.file 文件操作

    本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变 ...

  9. Java NIO Path接口和Files类配合操作文件

    Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...

随机推荐

  1. A JavaScript Image Gallery

    childNodes property:  The childNodes property is a way of getting information about the children of ...

  2. 如何看待微软新开源的LightGBM?

    GBDT虽然是个强力的模型,但却有着一个致命的缺陷,不能用类似mini batch的方式来训练,需要对数据进行无数次的遍历.如果想要速度,就需要把数据都预加载在内存中,但这样数据就会受限于内存的大小: ...

  3. 云容器和安全性仍然是困扰IT人士的头号问题

    [TechTarget中国原创] 容器和云安全仍然是IT领域中最热门的两个话题.下面就让我们来详细探讨一下吧. 云容器风靡一时是事出有因的.如Docker这样的容器能够提高应用的可移植性,并让企业用户 ...

  4. C#环境下使用Windows消息传递字符串数据的研究

    前言: 日前,师兄交给了我一个课题,将一个后台运行的Console程序,修改为WindowsForm程序,并在其界面上增加配置设置,以及运行记录。 原来的Console程序,后台运行的流程在其中一个类 ...

  5. 图说不为人知的IT传奇故事-5-小型机之王

    此系列文章为“图说不为人知的IT传奇故事”,各位大忙人可以在一分钟甚至几秒内了解把握整个内容,真可谓“大忙人的福利”呀!!希望各位IT界的朋友在钻研技术的同时,也能在文学.历史上有所把握.了解这些故事 ...

  6. Locust性能测试框架学习

    1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁.轻量.高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力. 官网:https://loc ...

  7. 常用JS整理

    目录 1 事件 a addEventListener--绑定事件b removeEventListener--解绑事件,只能解开addEventListener绑定的事件 2 JS获取节点信息a by ...

  8. 字符串匹配算法(在字符串T中查找是否有与字符串P相同的子串)

    T称为目标串(Target)或主串 ,P称为模式串(Pattren) 或子串 1. 简单字符串模式匹配算法 原理:用字符串P的字符依次与字符串T中的字符进行比较,首先将字符串P从第0个位置起与主串T的 ...

  9. mysql物理备份恢复 xtrabackup 初试

    听闻xtrabackup开源且强大 2018-03-06 11:54:41 在官网下载安装了最新的2.4.9版本 网上文章都用的innobackupex,但是最新版已经抛弃了,自己看看手册<Pe ...

  10. MySQL误操作后如何快速恢复数据?

    摘要: 利用binlog闪回误操作数据. 基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如 ...