NIO之Channel、Buffer
前言 Java NIO 由以下几个核心部分组成: 1 、Buffer 2、Channel 3、Selector 传统的IO操作面向数据流,意味着每次从流中读一个或多个字节,直至完成,数据没有被缓存在任何地方。 NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据。 本文着重介绍Channel和Buffer的概念以及在文件读写方面的应用和内部实现原理。 Buffer A buffer is a linear, finite sequence of elements of a specific primitive type. 一块缓存区,内部使用字节数组存储数据,并维护几个特殊变量,实现数据的反复利用。 1、 mark :初始值为-1,用于备份当前的position; 2、 position :初始值为0,position表示当前可以写入或读取数据的位置,当写入或读取一个数据后,position向前移动到下一个位置; 3、 limit :写模式下,limit表示最多能往Buffer里写多少数据,等于capacity值;读模式下,limit表示最多可以读取多少数据。 4、 capacity :缓存数组大小 mark() :把当前的position赋值给mark public final Buffer mark() { mark =