想要初步了解 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 5137 去掉一个点 使得最短路最大(2014广州现场赛 K题)

    题意:从2~n-1这几个点中任意去掉一个点,使得从1到n的最短路径最大,如果任意去掉一个点1~n无通路输出Inf. Sample Input4 51 2 31 3 71 4 502 3 43 4 23 ...

  2. ASP.NET:Forms身份验证和基于Role的权限验证

    从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Membership的唯一作用就是你可以参考它的实现 ...

  3. 【51nod】1822 序列求和 V5

    题解 我是zz吧 nonprime[i * prime[j]] = 0 = = 还以为是要卡常,卡了半天就是过不掉 我们来说这道题-- 首先,我们考虑一个\(K^2\)做法 \(f_{k}(N) = ...

  4. HDU - 4420 2013icpc长春A 函数离散化 + st表

    思路:我们定义F(x) 为以x点为起点,向后(a - b)个里面有多少个白球,虽然x的范围是LL范围内的,但是白球的 个数只有1e5, 那么我们可以把连续一段相同的离散化到一起, 对于一个确定的长度为 ...

  5. caffe fine tune 复制预训练model的参数和freeze指定层参数

    复制预训练model的参数,只需要重新copy一个train_val.prototxt.然后把不需要复制的层的名字改一下,如(fc7 -> fc7_new),然后fine tune即可. fre ...

  6. 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)

    Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NO ...

  7. Git 码云操作

    https://www.cnblogs.com/lanxiang/p/7487971.html 将项目提交到码云 在码云创建项目 然后在项目目录下: 打开后输入: git init 目录下出现.git ...

  8. idea导入或打开项目配置问题

    learn项目遇到问题: 1.IntelliJ Idea编译报错:请使用 -source 7 或更高版本以启用 diamond 运算符 file - project structure或者直接快捷键: ...

  9. CentOS通过光盘启动救援数据

    (1).CentOS6 1)首先确保实体机有光盘,虚拟机有光盘镜像.并通过BIOS设置从光盘启动,实体机请通过提示进入BIOS,虚拟机请找到上方菜单中虚拟机-->电源-->打开电源时进入固 ...

  10. 阿里云腾讯云服务器ubuntu多域名配置

    1.将域名A记录解析到服务器的公网 IP 地址,把www也添加A记录到公网ip 2.ubuntu系统修改hosts文件,hosts文件目录为/etc/hosts,可以用vim编辑  sudo vim ...