Java的IO相关内容。
缓冲区
java.nio包下面定义了一些缓存区类,基类是Buffer类,是一个抽象类。缓存区有3个状态变量,position、limit和capacity,position是指读写头的位置,limit是指读写头能够读到或写到的位置,capacity是指缓冲区的大小,缓冲区也是支持做标记,所以也有一个mark的变量,它们的关系是mark <= position <= limit <= capacity,mark大于position时,mark就会失效。
Buffer
Buffer的子类都会提供两种get方法和put方法用来对缓冲区进行操作,Buffer自己提供了基本的对缓冲区状态的查询和设置操作,缓冲区的capacity是在构造的时候给定的,之后就无法修改,其他的都可以设置。
1 | flip() // limit = position;position = 0;mark = -1; 翻转操作,之前往缓存写,现在可以读取之前写入的数据;之前是从缓存里读,现在可以写入覆盖之前的数据 |
Buffer子类
Buffer有一些针对基本数据类型的缓冲区子类:ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer。这些都又类似的方法,一些put个get方法,这些方法都是操作对应的基本数据类型。而ByteBuffer有针对其他基本数据类型的方法,ByteBuffer是直接操作字节的,所以ByteOrder对其是有影响的,ByteOrder有两个常量,BIG_EDIAN和LITTLE_EDIAN。大端表示字节的高位在前,小端表示字节的地位在前,ByteBuffer有对应的asXXXBuffer()方法来将ByteBuffer转换成其他Buffer。
Buffer的子类的一些方法如下:
1 | allocate(capacity) // 创建一个指定容量的缓冲区 |