【Java Nio】 从Buffer到Channel

作者: 红色黎明 分类: Java,学习笔记 发布时间: 2017-02-21 23:08

这篇文章主要整理近期我看到的java.nio高效编程中Buffer和Channel的知识点。

一、java.nio

两个基础术语:缓冲区buffer和通道channel。缓冲区用于容纳数据,通道表示打开的到I/O设备(例如文件或套接字)的连接。

二、Buffer

1、Buffer的要素:

1)position:当前位置,缓冲区下一次发生读写操作的索引。

2)limit:当前界限,缓冲区最后一个有效位置之后下一个位置的索引值。

3)capacity:容量

4)mark:标记。临时记录位置。buffer.mark(buffer.position()) -> buffer.postion(6) -> buffer.reset() 使得 position = mark

2、Buffer基础方法

Buffer并没有提供get、put方法,由派生类提供。派生类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、MappedByteBuffer、ShortBuffer。

3、Buffer重点方法:

4、ByteBuffer基础方法

三、Channel

1、通道表示到I/O源或目标的打开的连接。支持:

DatagramSocket  通过UDP读写网络数据

FileInputStream、FileOutputStream、RandomAccessFile  文件输入输出流

ServerSocket  监听新进来的TCP连接,每一个连接创建一个新的SocketChannel

Socket  通过TCP读写网络中的数据

2、Channel基础方法

3、FileChannel用法

4、ServerSocketChannel用法

5、I/O非阻塞方法

1)FileChannel的非阻塞

2)ServerSocketChannel非阻塞

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注