首先了解一下NIO中的重要概念 通道、缓冲区、选择器
通道- 类似于流,但是可以异步读写数据(流只能同步读写),通道是双向的,(流是单向的),通道的数据总是要先读到一个buffer 或者 从一个buffer写入,即通道与buffer进行数据交互。
通道类型:
o FileChannel:从文件中读写数据的通道。通过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例,FileChannel比较特殊,它可以与通道进行数据交互, 不能切换到非阻塞模式,套接字通道可以切换到非阻塞模式。
o DatagramChannel:能通过UDP读写网络中的数据的通道,直接通过DatagramChannel.open()获取一个DatagramChannel实例。
o SocketChannel:能通过TCP读写网络中的数据的通道,直接通过SocketChannel.open()获取一个SocketChannel实例。
o ServerSocketChannel:可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel,直接通过ServerSocketChannel.open()获取一个ServerSocketChannel实例。
缓冲区- 本质上是一块可以存储数据的内存,被封装成了buffer对象!
缓冲区类型:
o ByteBuffer
o MappedByteBuffer
o CharBuffer
o DoubleBuffer
o FloatBuffer