• Mark标记的使用


    package com.nio;
    
    import java.nio.ByteBuffer;
    
    /**
     * 缓存区(Buffer):在java NIO 中负责数据点额存取。缓存区就是数组。用于存储不同数据类型的数据
       Mark标记
      规律:  0<=mark<=position<=limit<=capacity
     */
    public class TestBufferMark {
        public static void main(String[] args) {
            String str="abcde";
            //1.分配一个指定大小的缓存区
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            buffer.put(str.getBytes());
            buffer.flip();
            byte[] dst = new byte[buffer.limit()];
            buffer.get(dst,0,2);
            System.out.println(buffer.position());
            System.out.println(new String(dst,0,2));
            //mark():标记
            buffer.mark();
            buffer.get(dst,2,2);
            System.out.println(buffer.position());
            System.out.println(new String(dst,2,2));
            //reset():恢复到mark的位置
            buffer.reset();
            System.out.println(buffer.position());
            //判断缓存区中是否还有可以操作的数据
            if(buffer.hasRemaining()){
                //获取缓存区中可以操作的数量
                System.out.println(buffer.remaining());
            }
    
        }
    }
    

      

    运行结果:
    2
    ab
    4
    cd
    2
    3
    

      

    package com.nio;

    import java.nio.ByteBuffer;

    /**
     * 缓存区(Buffer:java NIO 中负责数据点额存取。缓存区就是数组。用于存储不同数据类型的数据
       Mark标记
      规律:  0<=mark<=position<=limit<=capacity
     */
    public class TestBufferMark {
        public static void main(String[] args) {
            String str="abcde";
            //1.分配一个指定大小的缓存区
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            buffer.put(str.getBytes());
            buffer.flip();
            byte[] dst = new byte[buffer.limit()];
            buffer.get(dst,0,2);
            System.out.println(buffer.position());
            System.out.println(new String(dst,0,2));
            //mark():标记
            buffer.mark();
            buffer.get(dst,2,2);
            System.out.println(buffer.position());
            System.out.println(new String(dst,2,2));
            //reset():恢复到mark的位置
            buffer.reset();
            System.out.println(buffer.position());
            //判断缓存区中是否还有可以操作的数据
            if(buffer.hasRemaining()){
                //获取缓存区中可以操作的数量
                System.out.println(buffer.remaining());
            }

        }
    }

     

  • 相关阅读:
    图书馆业务制图
    单元测试(输入一个数组和它的大小,输出这个数组中最大子数组的和)
    build to win读后感
    小学四则运算
    微信公众平台具体方案和人员分工
    问卷调查结果剖析
    题目确定与需求分析
    课程介绍与团队简介
    网站LOGO以及网页样式
    C Sharp进行网站信息抽取与小型内部搜索引擎的讲解
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14414187.html
Copyright © 2020-2023  润新知