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. 【Rotate Image】cpp

    题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...

  2. 第九届极客大挑战 部分WP

    CODE 和0xpoker分0day 百度 取石子游戏. https://blog.csdn.net/qq_33765907/article/details/51174524 已经说得很详细了,慢慢来 ...

  3. c#之线程同步--轻量级同步 Interlocked

    轻量级同步 Interlock 为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步. 如果你学过操作系统里面的PV操作(即信号量),那么你对它已经了解了一般.它实现的正是如 ...

  4. CSU-1980 不堪重负的树

    CSU-1980 不堪重负的树 Description 小X非常喜欢树,然后他生成了一个大森林给自己玩. 玩着玩着,小X陷入了沉思. 一棵树由N个节点组成,编号为i的节点有一个价值Wi. 假设从树根出 ...

  5. 【转载】zookeeper使用和原理探究(一)

    最近开始看到一些公司在使用zookeeper,本身对此了解的很少,这里看到一篇非常好的文章,因此转载 原贴地址:http://www.blogjava.net/BucketLi/archive/201 ...

  6. leetcode NO.7 反转整数 (python实现)

    来源 https://leetcode-cn.com/problems/reverse-integer/description/ 题目描述 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 ...

  7. 四则运算UI组结对作业报告

    Github提交地址: 小组成员:陈兆庭,陈昶金: 一.编程阶段 清明节开始接触和调研关于UI设计的方法.由于两人的各方面知识储备均不足,在各种东西C#.MFC.Qt中进行调查和讨论,最终因为网上说Q ...

  8. P2165 [AHOI2009]飞行棋

    题目描述 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入输出格式 输入格式: 第一行为 ...

  9. 剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student." ,则输出" ...

  10. box-sizing重置

    html { /*-webkit-box-sizing: border-box; -moz-box-sizing: border-box;*/ box-sizing: border-box; } *, ...