• 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类

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,这意味着要使用泛型为字符类型的集合类作为数据写入指定文件中,很麻烦。
  • 如果只是简单写入内容到文件中,建议使用重定向标准输出流,然后使用打印流写入,简单粗暴。
使用Files类读取文件内容就不介绍了,个人觉得除了文件复制比较简洁通用,其他两个方法个人认为使用IO流或者NIO流比较方便一点。剩下来会介绍一些Files类的方法。
	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类的使用详解的更多相关文章

  1. Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  2. 【转】UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  3. String类的构造方法详解

    package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...

  4. [转]c++类的构造函数详解

    c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...

  5. UML类图与类的关系详解

    摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...

  6. phpcms加载系统类与加载应用类之区别详解

    <?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...

  7. c++类的构造函数详解

    c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类 ...

  8. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  9. String类内存空间详解

    java.lang.String类内存问题详解 字符串理解的难点在于其在堆内存空间上的特殊性,字符串String对象在堆内存上有两种空间: 字符串池(String pool):特殊的堆内存,专门存放S ...

随机推荐

  1. android.view.WindowLeaked的解决办法

    按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 产生原因: 我们知道Android的每一个Activity都有个WindowManage ...

  2. web测试流程的总结及关注点

    项目的测试流程大只包含的几个阶段:立项.需求评审.用例评审.测试执行.测试报告文档 一.立项后测试需要拿到的文档 1.需求说明书 2.原型图(及UI图) 3.接口文档 4.数据库字典(表的数量.缓存机 ...

  3. Java基础之StringBuffer和StringBuilder的区别

    StringBuffer是一个字符串的缓存类,属于一个容器,对于容器,我们可以进行增删改查. StringBuffer的容器长度是可变的,并且里面可以存放多种的数据类型.它跟其他容器,比如数组,是很不 ...

  4. 【Oracle】查看被锁的表和解锁

    --以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...

  5. OS考研复习笔记——操作系统的定义、目标、作用和发展的主要动力

    计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次补充. 硬件:计算机物理设备,即各种处理机存储器.输入/输出设备 ...

  6. Python初学者第十九天 函数(3)

    19day 函数 1.作用域 Python中,一个函数就是一个作用域.所有的局部变量都是放在当前的作用域里面 代码定义完成后,作用域已经生成,作用域链向上查找 2.匿名函数 当需要暂时性的用到一个函数 ...

  7. Java学习---Java代码编写规范

    编码规范 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程.系统继承的其它资源中的源程序也应按此规 ...

  8. Java Web项目部署

    打包 使用Eclipse打包JAVA Web项目 如下 在项目上单击右键选择Export-选择JavaEE文件夹-选择WAR file(MyEclipse),单击Next>如图所示,选择存放打包 ...

  9. 【深入理解JAVA虚拟机】读后感

    收获颇多的一本书,非常值得细细品味. 1.所谓万变不离其宗,此书便是宗.读过此书后,发现以前看过的网上好多五花八门的文章,都是源自此书. 2.举一反三.此书中讲到的jvm用到的各种思想,在工作中其实经 ...

  10. Directed Graphs

    有向图 Introduction 就是边是有方向的,像单行道那样,也有很多典型的应用. 点的出度指从这个点发出的边的数目,入度是指向点的边数.当存在一条从点 v 到点 w 的路径时,称点 v 能够到达 ...