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) //存在才删除,不存在时不会报错。
只能删除文件、空目录。如果该文件夹下包含子文件、子目录,即便子目录是空的,也会报错。
要删除有内容的文件夹,需要递归删除子文件、子文件夹。
查看某个盘的大小:
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类的常用方法的更多相关文章
- java.util.concurrent.Executors类的常用方法介绍
Java 线程池 Executors提供了几种线程池实现? 5个,分别如下 1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收 ...
- Java NIO之Charset类字符编码对象
介绍 java中使用Charset来表示编码对象 This class defines methods for creating decoders and encoders and for retri ...
- 转载Java NIO中的Files类的使用
Java NIO中的Files类(java.nio.file.Files)提供了多种操作文件系统中文件的方法. Files.exists() Files.exits()方法用来检查给定的Path在文件 ...
- Java NIO之拥抱Path和Files
Java面试通关手册(Java学习指南)github地址(欢迎star和pull):https://github.com/Snailclimb/Java_Guide 历史回顾: Java NIO 概览 ...
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Java NIO学习系列七:Path、Files、AsynchronousFileChannel
相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...
- 海纳百川而来的一篇相当全面的Java NIO教程
目录 零.NIO包 一.Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Exampl ...
- Java7 新特性 —— java.nio.file 文件操作
本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
随机推荐
- 通过Gradle Plugin实现Git Hooks检测机制
背景 项目组多人协作进行项目开发时,经常遇到如下情况:如Git Commit信息混乱,又如提交者信息用了自己非公司的私人邮箱等等.因此,有必要在Git操作过程中的适当时间点上,进行必要的如统一规范.安 ...
- 【Median of Two Sorted Arrays】cpp
题目: There are two sorted arrays A and B of size m and n respectively. Find the median of the two sor ...
- Mac教程macOS教程 苹果电脑教程
第1 章 初识MacOS 01 菜单栏 02 键盘 03 聚焦(Spotlight)
- 什么是事务?MySQL如何支持事务?
什么是事务? 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务.(说白了就是几步的数据库操作 ...
- csu-2018年11月月赛Round2-div1题解
csu-2018年11月月赛Round2-div1题解 A(2191):Wells的积木游戏 Description Wells有一堆N个积木,标号1~N,每个标号只出现一次 由于Wells是手残党, ...
- 百度地图API 根据地址查询经纬度
html页面.引用上API: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> ...
- C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...
- 很好用的取代 PuTTY 的SSH远程登陆软件 Termius
一直以来, 我都是用 PuTTY 一个窗口一个窗口来监视我所有的远程服务器. putty-connections-on-a-screen 总感觉非常的不方便, 特别是当远程链接断开需要再重新打开PUT ...
- Codeforces Round #398 (Div. 2) A-E
分数史上新低 开场5分钟过了A题,想着这次赌一把手速,先去切C吧 看完C题觉得这应该是道水题,码了十分钟提交,WA 想着这明明是道水题,估计少考虑了情况,添了几行再交,WA 不可能啊,这题都A不掉,和 ...
- 洛谷P1966 火柴排队[NOIP提高组2013]
我确信我应该是做过这道题……就当再写一遍好了. 贪心思想,一番证明得出a和b数组中最小对最小,次小对次小……时解最优.那么先处理出a,b之间的对应关系,然后按照该关系求a或者b的逆序对数量就是答案 / ...