NIO的N体现在哪里

N体现在哪呢?

I/O技术是非常是实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。

在JAVA 1.4版本引入了一套新的IO API–>JAVA NIO (New IO , Non-Blocking IO)。NIO可以用来替代原本的IO,但使用的方式完全不同,NIO是支持面向缓冲区的(IO是面向流的),基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。

Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO.

  • java.nio.channels.Channel

    FileChannel:处理本地文件
    SocketChannel:TCP网络编程的客户端的Channel
    ServerSocketChannel:TCP网络编程的服务器端的Channel
    DatagramChannel:UDP网络编程中发送端和接收端的Channel

随着JDK 7 的发布,JAVA对NIO进行了扩展,增强了对文件处理和文件系统特性的支持。我们称它们为NIO.2.NIO已经称为文件处理中越来月重要的部分。

本文基于 NIO 列出NIO.2中的Path、Paths、和Files核心API 以方便查阅使用.

NIO.2中Path、Paths、Files类的使用

早期的Java只提供一个File类来访问文件系统,但File类功能比较有限,所提供的方法性能也不高。而且,大多数方法在出错时仅返回失败,并不会提供异常信息

NIO.2为了弥补这种不足,引入了Path接口,代表一个平台无关的平台路劲,描述了目录结构中文件的位置、Path可以看成是File类的升级版本,实际引用的资源也可以不存在

  • 以前IO操作是这样子的
import java.io.File;
File file = new File("test.txt");
  • 在java7,我们可以这样子写
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("test.txt");

paths中包含了两个返回Path的静态工厂方法。

  • static Path get(String first, String … more)
    用于将多个字符串串连成路径

  • static Path get(URI url)
    返回指定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类的对象

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)long size(Path path)

File中用于判断的方法

判断方法
boolean exists(Path path, LinkOption … opts)判断文件是否存在
boolean isDirectory(Path path, LinkOption … opts)判断是否是目录
boolean isRegularFile(Path path, LinkOption … opts)判断是否是文件
boolean isHidden(Path path)判断是否是隐藏文件
boolean isReadable(Path path)判断文件是否可读
boolean isWritable(Path path)判断文件是否可写
boolean notExists(Path path, LinkOption … opts)判断文件是否不存在

File中用于操作内容的方法

操作内容的常用方法
SeekableByteChannel newByteChannel(Path path, OpenOption…how)获取与指定文件的连接,how 指定打开方式
DirectoryStream newDirectoryStream(Path path) 打开 path 指定的目录
InputStream newInputStream(Path path, OpenOption…how)获取 InputStream 对象
OutputStream newOutputStream(Path path, OpenOption…how)获取 OutputStream 对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vivien_o.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值