zoukankan      html  css  js  c++  java
  • 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());
            }

        }
    }

     

  • 相关阅读:
    Oracle数据库中。varchar 和 varchar2的区别
    gvim 编辑器初学
    鼠标事件以及clientX、offsetX、screenX、pageX、x的区别
    清除浮动的5种方法
    按钮的单双击事件
    webstrom中的快捷键
    限制 input 输入框只能输入纯数字
    控制<标签>不可被点击
    way.js
    ECharts 折线图and柱状图
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14414187.html
Copyright © 2011-2022 走看看