JavaSE:NIO

1.  Buffer缓冲区概述

    <1>作用:缓冲区,用来存放具体要被传输的数据,比如文件、socket等。

                在NIO中,数据被装入Buffer后,再通过通道(Channel)进行传输

    <2>Buffer就是一个数组,用来保存不同数据类型的数据

        在 NIO中,所有的缓冲区类型,都继承于抽象类 Buffer, 最常用的就是 ByteBuffer。

                     对于 Java中的基本类型,基本都有一个具体的 Buffer类型与之对应,它们之间的继承关系如下:

      ByteBuffer:(储存)字节数据(到缓冲区)

      ShortBuffer:(储存)字符串数据(到缓冲区)

         CharBuffer:(储存)字符数据(到缓冲区)

       IntBuffer:  (储存)整数数据(到缓冲区)

       LongBuffer: (储存)长整型数据(到缓冲区)

       DoubleBuffer:   (储存) 小数 (到缓冲区)

       FloatBuffer:  (储存)小数 (到缓冲区)

      对于Java中的基本数据类型,都有一个Buffer类型与之相对应,最常用的自然是ByteBuffer类 (二进制数据)

2.  ByteBuffer的创建方式

      代码示例

        <1>  在堆中创建缓冲区:allocate(int capacity)

        <2>  在系统内存创建缓冲区:allocateDirect(int capacity)

        <3>  通过普通数组创建缓冲区:wrap(byte[] arr)

import java.nio.ByteBuffer;

public class Demo01Buffer创建方式 {

    public static void main(String[] args) {
        
        // <1>第一种创建方式:在堆中创建缓冲区 - allocate (int capacity)
        ByteBuffer buffer1 = ByteBuffer.allocate(10);

        // <2>第二种创建方式:在系统内存创建缓冲区: allocateDirect(int capacity)
        ByteBuffer buffer2 = ByteBuffer.allocateDirect(10);

        // <3>第三种创建方式:通过普通数组,创建缓冲区: wrap(byte[] arr)
        byte[] arr = {97,98,99};
        ByteBuffer buffer3 = ByteBuffer.wrap(arr); 
    }
}

 

原文地址:https://www.cnblogs.com/JasperZhao/p/14954376.html