一.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。
- java.nio.channels.Channel
FileChannels:处理本地文件
SocketChannel:TCP网络编程的客户端的Channel
ServerSocketChannel:TCP网络编程的服务器端的Channel
DatagramChannel:UDP网络编程中发送端和接收端的Channel
NIO.2:随着JDK7的发布,java对NIO进行了极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为NIO.2。
因为NIO提供的一些功能,NIO已经成为文件处理中越来越重要的部分。
- 早期的java只提供了一个File类来访问文件系统,但File类的功能比较有限,所提供的方法性能也不高。而且,大多数方法在出错时仅返回失败,并不会提供异常信息。
- NIO.2为了弥补这些不足,引入了Path接口,代表了一个平台无关的平台路径,描述了目录结构中文件的位置。Path可以看成是File类的升级版本,实际引用的资源也可以不存在。
- 在以前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")
- 同时,NIO.2在java.nio.file包下还提供了File,Paths工具类,Files包含了大量静态的工具方法来操作文件,Paths则包含了二个返回Path的静态工厂方法
二.Paths类提供的静态方法get()方法用来获取Path对象:
static Path get(String first,String ...more):用于将多个字符串串成路径
static Path get(URL un):返回指定un对应的Path路径
Path常用方法:
String toString():返回调用Path对象的字符串表示形式
boolean startWith(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类的对像
三.Files类:java.nio.file.Files用于操作文件或目录的工具类
Files类常用方法:
Path copy(Path src,Path dest,CopyOption...how):文件的复制
Path createDirectory(Path path,FileAttribute<?>...attr):创建一个目录
Path createFile(Path path,FileAttribute<?>...arr):创建一个文件
void delete(Path path):删除一个文件/目录,如果不存在,执行报错
void deleteifExists(Path path):Path对应的文件/目录如果存在,执行删除
Path move(Path src,Path dest,CopyOption..how):将src移动到dest位置
long size(Path path):返回path 指定文件的大小