想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.file.Path 类。这个类是 NIO.2 的里程碑,所有应用程序中的 I/O 操作都和这个类密不可分。这个类几乎可以说是 NIO.2 中最常用的类。

Path 类简介

文件路径存在于文件系统中。文件系统可以通过 java.nio.file.FileSystems 这个 final 类来进行访问,从这个类中可以获取 java.nio.file.FileSystem 类的对象。FileSystems 类提供了下面两个很重要的方法,同时也提供了 newFileSystem() 方法,用来创建一个新的文件系统:

  • getDefault():这个静态方法返回 JVM 默认的 FileSystem – 一般说来,也就是操作系统的默认文件系统。
  • getFileSystem(URI uri):这个静态方法从一组文件系统提供者中返回一个与 URI 匹配的文件系统(FileSystem)。Path 类可以在任何文件系统(FileSystem)和任何存储空间(java.nio.file.FileStore; 这个类反应了底层的存储)上操作文件。默认情况下(最常用),Path 类引用默认文件系统(计算机的文件系统)的文件,但是 NIO.2 是完全模块化的—— FileSystem 的具体实现是在内存中的一组数据,因此在网络环境或在虚拟文件系统中,NIO.2 也完全适用。NIO.2 提供给我们在文件系统中操作文件、文件夹或链接的所有方法。

Path 类是 java.io.File 类的升级版,但是在 File 类中还保留了一些特殊的操作,因此 File 类并没有过时或不推荐使用。并且,从 Java 7 开始,两个类都可以使用,这意味着,开发者可以混合使用两个类来编写最好的 I/O 应用。 Java 7 提供了简单的 API 对这两个类进行相互转换。

想想你曾经编写过的类似下面的代码:

import java.io.File;

File file = new File("index.html");
1
2
3
import java.io.File;
File file=newFile("index.html");

从 Java 7 开始,不再需要这样写了,你可以转换为:

import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("index.html");
1
2
3
4
import java.nio.file.Path;
import java.nio.file.Paths;
Path path=Paths.get("index.html");

仔细看看,Path 类相当于用编程的方式来反应文件系统中的路径。路径的字符串中包含了文件名,目录列表以及操作系统相关的分隔符(例如,在 Windows 中是反斜线“\”,在 Linux 中是正斜线“/”),这意味着 Path 类不是系统独立,而是依赖于系统路径字符串。由于 Path 类基于字符串创建,因此它引用的资源也有可能不存在。

JAVA nio 2 和 Path 类简介的更多相关文章

  1. JAVA nio 2 定义 Path 类

    一旦确认了文件系统上的一个文件或目录,那么就可以定义一个 Path 类来指向它.定义 Path 类可以使用绝对路径.相对路径.路径中带有一个点号“.”(表示当前目录).路径中带有两个点“..”(表示上 ...

  2. Java NIO之拥抱Path和Files

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

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

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

  4. Java基础-日期格式化DateFormat类简介

    Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...

  5. Java NIO学习(Path接口、Paths和Files工具类的使用)

    NIO学习:Paths和Files工具类的使用 JDK1.7引入了新的IO操作类.在java.nio.file包下,Java NIO Path接口和Files类. Path接口:Path表示的是一个目 ...

  6. JAVA NIO学习笔记1 - 架构简介

    最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...

  7. Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: 对文件系统的访问提供了全面的支持 提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Ja ...

  8. 【原创】java NIO FileChannel 学习笔记 FileChannel 简介

    java NIO 中FileChannel 的实现类是  FileChannelImpl,FileChannel本身是一个抽象类. 先介绍FileChannel File Channels 是线程安全 ...

  9. Java NIO.2 使用Files类遍历文件夹

    在以前的Java版本中,如果要遍历某个文件夹下所有的子文件.子文件夹,需要我们自己写递归,很麻烦. 在Java7以后,我们可以NIO.2中的Files工具类来遍历某个文件夹(会自动递归). 大致用法: ...

随机推荐

  1. hdu 5078(2014鞍山现场赛 I题)

    数据 表示每次到达某个位置的坐标和时间 计算出每对相邻点之间转移的速度(两点间距离距离/相隔时间) 输出最大值 Sample Input252 1 9//t x y3 7 25 9 06 6 37 6 ...

  2. mysql 解除正在死锁的状态

    转自:http://blog.csdn.net/hotdust/article/details/51524469 from: http://www.2cto.com/database/201303/1 ...

  3. Python 爬虫个人记录(一)豆瓣电影250

    一.爬虫环境 Python3.6 scrapy1.4 火狐浏览器 qq浏览器 二.scrapy shell 测试并获取 xpath 1.进入scrapy shell 2 .获取html fetch(' ...

  4. 【基础知识】ASP.NET[基础一(ashx)]

    一.ASP.NET介绍 1.ASP.NET包括: 一般处理程序(ashx):WebForm ( aspx ):MVC(Model view con~~): 2.ASP.NET的常用文件(重点): 1& ...

  5. Openstack-开发基础 stevedore学习

    在给openstack-N版加路由的时候发现怎么都无法搞定,原来现在用这个模块来处理了 stevedore是用来实现动态加载代码的开源模块.它是在OpenStack中用来加载插件的公共模块.可以独立于 ...

  6. 深入理解mysql的自连接和join关联

    一.mysql自连接 mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名.我们举例说明,下面是商品采购表,我们需要找到采购价格比惠惠高的所有信息. 一般情况我们看到这张表 ...

  7. Django MiddleWare初识

    一.Django 中间件介绍 中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定 ...

  8. MSSQL 基础知识与语句笔记

    建库 CREATE DATABASE 数据库名 ON[PRIMARY] --默认属于PRIMARY主文件组,可省略 ( NAME='', --主数据文件的逻辑名 名称 FILEAME='', --主数 ...

  9. Html的学习随笔

    在<head>的<style>中定义样式,有#号,比如#header就是定义一种名为header的样式,后面用id=header来调用:而无#号,比如直接就是header,那后 ...

  10. NOIP 算法模板

    Hash: #include <iostream> #include <cstdio> #include <cstdlib> #include <algori ...