Java NIO 概述
Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新 的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。
体系结构
Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
NIO. 2
随着 JDK 7 的发布,Java对NIO进行了极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为 NIO.2。 因为 NIO 提供的一些功能,NIO已经成为文件处理中越来越重要的部分。
NIO.2中Path、Paths、Files类的使用
Path接口
- 早期的Java只提供了一个File类来访问文件系统,但File类的功能比较有限,所提供的方法性能也不高。而且,大多数方法在出错时仅返回失败,并不会提供异常信息。
- NIO. 2为了弥补这种不足,引入了Path接口,代表一个平台无关的平台路径,描述了目录结构中文件的位置。Path可以看成是File类的升级版本,实际引用的资源也可以不存在。
```java 在以前IO操作都是这样写的: import java.io.File; File file = new File(“index.html”); 但在Java7 中,我们可以这样写: import java.nio.file.Path; import java.nio.file.Paths; Path path = Paths.get(“index.html”);
Paths和Files类
NIO.2在java.nio.file包下还提供了Files、Paths工具类,Files包含 了大量静态的工具方法来操作文件;Paths则包含了两个返回Path的静态工厂方法。
常用方法
Paths类
提供的静态 get() 方法用来获取 Path 对象
static Path get(String first, String … more)
: 用于将多个字符串串连成路径static Path get(URI uri)
: 返回指定uri对应的Path路径
Path常用方法
String toString()
: 返回调用 Path 对象的字符串表示形式 boolean startsWith(String path)
: 判断是否以 path 路径开始boolean endsWith(String path)
: 判断是否以 path 路径结束boolean isAbsolute()
: 判断是否是绝对路径Path getParent()
:返回Path对象包含整个路径,不包含 Path 对象指定的文件路径Path getRoot()
:返回调用 Path 对象的根路径Path getFileName()
: 返回与调用 Path 对象关联的文件名int getNameCount()
: 返回Path 根目录后面元素的数量Path getName(int idx)
: 返回指定索引位置 idx 的路径名称Path toAbsolutePath()
: 作为绝对路径返回调用 Path 对象Path resolve(Path p)
:合并两个路径,返回合并后的路径对应的Path对象File toFile()
: 将Path转化为File类的对象