JAVA
Java NIO 与 IO 的主要区别
缓冲区(Buffer)和通道(Channel)
(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()。
(3)、通道之间的数据传输 ①TransferFrom(); ②TransferTo();
(4)、分散(Scatter)与聚集(Gather) ①分散读取:将通道中的数据分散到多个缓冲区中 ②聚焦写入:将多个缓冲区聚焦到通道中
(1)、选择器(Selector)①使用NIO完成网络通讯的三个核心a、通道:负责连接 java.nio.channels.Channel接口 SocketChannel ServerSocketChannel DatagramChannel Pipe.SinkChannel Pipe.SourceChannelb、缓冲区:负责数据的存取c、选择器:是SelectableChannel的多路复用器,用于监控SelectableChannel的IO状况
(2)、SocketChannel、ServerSocketChannel、DatagramChannel①Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。 a、操作步骤: 打开 SocketChannel 读写数据 关闭 SocketChannel②Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道,就像标准IO中的ServerSocket一样。③ Java NIO中的DatagramChannel是一个能收发UDP包的通道。 a、操作步骤: 打开 DatagramChannel 接收/发送数据
(1)、Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。
图片部分是代码示例