1.2 缓冲区介绍
在使用传统的I/O流API时,如InputStream和OutputStream,以及Reader和Writer联合使用时,常常把字节流中的数据放入byte[]字节数组中,或把字符流中的数据放入char[]字符数组中,也可以从byte[]或char[]数组中获取数据来实现功能上的需求,但由于在Java语言中对array数组自身进行操作的API非常少,常用的操作仅仅是length属性和下标[x]了,在JDK中也没有提供更加方便操作数组中数据的API,如果对数组中的数据进行高级处理,需要程序员自己写代码进行实现,处理的方式是比较原始的,这个问题可以使用NIO技术中的缓冲区Buffer类来解决,它提供了很多工具方法,大大提高了程序开发的效率。
Buffer类的声明信息如图1-6所示。
图1-6 Buffer类的声明信息
从Buffer类的Java文档中可以发现,Buffer类是一个抽象类,它具有7个直接子类,分别是ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer,也就是缓冲区中存储的数据类型并不像普通I/O流只能存储byte或char数据类型,Buffer类能存储的数据类型是多样的。
注意
Buffer类没有BooleanBuffer这个子类。
类java.lang.StringBuffer是在lang包下的,而在nio包下并没有提供java.nio.StringBuffer缓冲区,在NIO中存储字符的缓冲区可以使用CharBuffer类。
NIO中的Buffer是一个用于存储基本数据类型值的容器,它以类似于数组有序的方式来存储和组织数据。每个基本数据类型(除去boolean)都有一个子类与之对应。