NIO-ByteBuffer的使用和内部结构

ByteBuffer的使用方法

  1. 通过Channel把数据写入到ByteBuffer
  2. 调用flip()切换到读模式
  3. 从ByteBuffer读取数据,例如:buffer.get();
  4. 调用clear()或者compact()切换到写模式
  5. 重复1-4步骤
    注:可结合代码部分去理解

ByteBuffer的内部结构

ByteBuffer有三个重要属性:

  • capacity(容量)
  • position(指针)
  • limit(读/写限制)
  1. 创建缓冲区:
    在这里插入图片描述
  2. 写入到缓冲区
    在这里插入图片描述
  3. 切换成读模式
    在这里插入图片描述
    在这里插入图片描述
  4. 通过clear()切换成写模式
    在这里插入图片描述
  5. 通过compact()切换成写模式
    在这里插入图片描述

代码

public static void main(String[] args) {
        try(FileChannel channel = new FileInputStream("data.txt").getChannel()){
            //准备缓冲区
            ByteBuffer buffer = ByteBuffer.allocate(10);
            //从channel读取数据到buffer
            while(true){
                int len = channel.read(buffer);
                if(len == -1){ //如果len == -1 说明buffer中的内容已经读取完毕
                    break;
                }
                //打印buffer的内容
                buffer.flip(); //切换至读模式
                while (buffer.hasRemaining()){
                    byte b = buffer.get(); //读取一个字节
                    System.out.println((char)b);
                }
                buffer.clear();//切换到写模式
            }
        }catch (IOException e){

        }
    }

版权声明:本文为qq_35238590原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。