多语言展示
当前在线:888今日阅读:23今日分享:25

Java NIO 详解

Java NIO简介:    1、JAVA NIO(New IO)是从java1.4版本开始引入的一个新的IO API,可以代替标准的Java IO API。    2、NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更高效的方式进行文件的读写操作
工具/原料

JAVA

一、区别比较
1

Java NIO 与 IO 的主要区别

2

缓冲区(Buffer)和通道(Channel)

二、文件通道(FileChannel)
1

(1)、通道的主要实现类    java.nio.channels.Channel接口    FileChannel    SocketChannel    ServerSocketChannel    DatagramChannel(2)、获取通道a、Java 针对支持通道的类提供了getChannel() 方法本地IO:    FileInputStream/FileOutputStream    RandomAccessFile网络IO:    Socket    ServerSocket    DatagramSocketb、在JDK 1.7中的NIO2 针对各个通道提供了静态方法 open()。c、在JDK 1.7中NIO2 的 Files 工具类的newByteChannel()。

2

(3)、通道之间的数据传输    ①TransferFrom();    ②TransferTo();

3

(4)、分散(Scatter)与聚集(Gather)    ①分散读取:将通道中的数据分散到多个缓冲区中    ②聚焦写入:将多个缓冲区聚焦到通道中

三、NIO的非阻塞式网络通信
1

(1)、选择器(Selector)①使用NIO完成网络通讯的三个核心a、通道:负责连接     java.nio.channels.Channel接口    SocketChannel    ServerSocketChannel    DatagramChannel    Pipe.SinkChannel    Pipe.SourceChannelb、缓冲区:负责数据的存取c、选择器:是SelectableChannel的多路复用器,用于监控SelectableChannel的IO状况

2

(2)、SocketChannel、ServerSocketChannel、DatagramChannel①Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。  a、操作步骤:    打开 SocketChannel    读写数据    关闭 SocketChannel②Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道,就像标准IO中的ServerSocket一样。③ Java NIO中的DatagramChannel是一个能收发UDP包的通道。  a、操作步骤:    打开 DatagramChannel    接收/发送数据

四、管道(Pipe)

(1)、Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。

注意事项

图片部分是代码示例

推荐信息