美文网首页
《NIO与Socket编程技术指南》读书笔记

《NIO与Socket编程技术指南》读书笔记

作者: 云师兄 | 来源:发表于2018-10-21 22:39 被阅读605次

    缓冲区

    Buffer类的使用

    传统的IO流常常把字节流中的数据放入byte或者char数组中,由于java对array数组操作的api较少,所以需要自己使用原始的处理方式(使用length属性等或者下标)处理数据,比较麻烦。这个问题可以使用Buffer缓冲区解决,Buffer类有多个子类:


    Buffer子类

    使用这些子类表示缓冲区保存多种类型的数据,而不只是byte和char。

    要注意的是,Buffer和它的子类都是抽象类,不能直接new出实例,需要将上面7种类型的数组包装(wrap)进缓冲区中,来构建不同数据结构的缓冲区。使用示例如下:

    byte[] byteArray = new byte[]{1,2,3,4};
    ByteBuffer byteBuffer = ByteBuffer.wrap(byteArray);
    

    wrap方法实现如下:

    public static ByteBuffer wrap(byte[] array,
                                        int offset, int length)
        {
            try {
                return new HeapByteBuffer(array, offset, length);
            } catch (IllegalArgumentException x) {
                throw new IndexOutOfBoundsException();
            }
        }
    

    上面的HeapByteBuffer就是Buffer类的实现类,所以wrap的过程也是实例化对象的过程。
    从ByteBuffer类内部:


    源码

    wrap传入的数组最后保存在了ByteBuffer实例内部,所以Buffer类实际上还是对数组进行封装而已。

    包装数据与获得容量

    相关文章

      网友评论

          本文标题:《NIO与Socket编程技术指南》读书笔记

          本文链接:https://www.haomeiwen.com/subject/zqjbzftx.html