File、Paths和Files类的使用详解
- Paths:通过get()方法返回一个Path对象,Path用于表示文件路径和文件。
- Files:提供了大量处理文件的方法,例如文件复制、读取、写入,获取文件属性、快捷遍历文件目录等.....
- Files 和 Paths是Java8新增的工具类,在处理文件方面功能非常强大。
Paths类
//以当前路径作为Path对象
Path p = Paths.get(".");
//使用传入的字符串返回一个Path对象
Path p2 = Paths.get("D","ReviewIO","URL");
//对应的路径
System.out.println("p对象的对应路径:" + p.toString());
System.out.println("p2对象的对应路径:" + p2.toString());
//路径数量是以路径名的数量作为标准
System.out.println("p路径数量:" + p.getNameCount());
System.out.println("p2路径数量:" + p2.getNameCount());
//获取绝对路径
System.out.println("p绝对路径:" + p.toAbsolutePath());
System.out.println("p2绝对路径:" + p2.toAbsolutePath());
//获取父路径
System.out.println("p父路径:" + p.getParent());
System.out.println("p2父路径:" + p2.getParent());
//获取p2对象的文件名或者文件目录名
System.out.println(p2.getFileName());
//通过Path对象返回一个分隔符对象
Spliterator<Path> split = p2.spliterator();
Paths类获取文件或文件目录路径可以使用采用多个字符串形式,也可以使用Path.get(D:\\ReviewIO\\URL)这种形式。返回的Path对象完全可以代替File类用于文件IO操作。
Files类
Path source = Paths.get("F:","Java经典练习题.pdf");
Path dest = Paths.get("F:","files.txt");
File f = new File("F:\\ok.pdf");
f.createNewFile();//如果f对象对应路径不存在就创建一个。
System.out.println("source对象的文件路径:" + source);
//复制文件
Files.copy(source, new FileOutputStream(f));
Files完成写入文件的方法
//写入内容到文件
ArrayList<String> as = new ArrayList<>();
as.add("A");
as.add("B");
as.add("C");
Files.write(dest, as, Charset.forName("GBK"));
- 实例说明:个人觉得用起来不怎么方便。方法参数很多,尤其是Iterable<? extends CharSequence>参数,Iterable是个顶级接口,实现类几乎都是集合类,并且限制了类型通配符上限是CharSequence,这意味着要使用泛型为字符类型的集合类作为数据写入指定文件中,很麻烦。
- 如果只是简单写入内容到文件中,建议使用重定向标准输出流,然后使用打印流写入,简单粗暴。
public static void main(String[] args) throws IOException {
Path source = Paths.get("F:","Java经典练习题.pdf");
/** 返回值为boolean的操作方法样例 */
System.out.println(Files.isHidden(source));//文件是否隐藏
System.out.println(Files.isExecutable(source));//文件是否可执行
System.out.println(Files.isWritable(source));//文件是否可写
//获取Paths对象对应的文件路径的文件储存
FileStore f = Files.getFileStore(Paths.get("F:"));
FileStore e = Files.getFileStore(Paths.get("E:"));
System.out.println("F盘的总大小" + f.getTotalSpace());
System.out.println("F盘的可用大小" + f.getUsableSpace());
System.out.println("F盘的未分配空间" + f.getUnallocatedSpace()); }
除了以上的方法之外,Files类还提供遍历文件和目录、监控文件变化、读取和设置文件权限、查看文件属性的方法,功能十分强大。
File、Paths和Files类的使用详解的更多相关文章
- Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- 【转】UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- String类的构造方法详解
package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...
- [转]c++类的构造函数详解
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...
- UML类图与类的关系详解
摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...
- phpcms加载系统类与加载应用类之区别详解
<?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...
- c++类的构造函数详解
c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类 ...
- 对python3中pathlib库的Path类的使用详解
原文连接 https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...
- String类内存空间详解
java.lang.String类内存问题详解 字符串理解的难点在于其在堆内存空间上的特殊性,字符串String对象在堆内存上有两种空间: 字符串池(String pool):特殊的堆内存,专门存放S ...
随机推荐
- 基于Apache Curator框架的ZooKeeper使用详解
一 简介 Apache Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API 简化了ZooKeeper的操作.通过查看官方文档,可以发现Curator主要解决了三类问题 ...
- 公司网络问题 & Caused by: org.gradle.internal.resource.transport.http.HttpRequestException
问题 公司网络问题,总是无法成功下载库,回到家就可以. Caused by: org.gradle.internal.resource.transport.http.HttpRequestExcept ...
- Android 虚拟多开系列一——技术调研
参考链接:http://weishu.me Github源码链接: 国内Xposed框架源码链接 VirtualAp ...
- SQL Server ->> ColumnStore Index(列存储索引)
Columnstored index是SQL Server 2012后加入的重大特性,数据不再以heap或者B Tree的形式存储(row level)存储在每一个数据库文件的页里面,而是以列为单位存 ...
- leetcode BFS
1. word ladder class Solution { public: int ladderLength(string beginWord, string endWord, unordered ...
- Sybase常用时间日期函数
Sybase日期函数日期函数getdate()得到当前时间,可以设置得到各种时间格式.datepart(日期部分,日期)取指定时间的某一个部分,年月天时分秒.datediff(日期部分,日期1,日期2 ...
- exchange 删除邮件
一 批量删除特定主题的邮件1.1 批量删除所有数据库中特定主题的邮件1) 群发了几封主题为“backup”的邮件: 2) 当前操作账号需要满足如下需求: a)该账号需属于Exchange Server ...
- CSMA/CD 续
重要特性 以太网不能进行全双工通信而只能进行双向交替通信(半双工通信).每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性. 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率 ...
- redis下的持久化保存
rdb.h rdb.c ---> 完成数据保存到临时文件,再利用rename保存到指定文件的过程: 如果需要写一个数据持久化保存的功能时,可以参考这部分代码: //rdb API int ...
- Git本地服务器搭建
安装编译环境,执行以下命令 [root@centos6 ~]# yum -y install curl curl-devel zlib-devel openssl-devel perl cpio ex ...