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());
            }

        }
    }

     

  • 相关阅读:
    红黑树
    jsp简单练习-简单的下拉表单
    【源代码】TreeMap源代码剖析
    ScrollView垂直滚动控件
    进度条控件基本使用
    时间对话框的使用
    DatePicker日期与时间控件
    ImageView显示网络上的图片
    bitmap==null
    android.os.NetworkOnMainThreadException
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14414187.html
Copyright © 2011-2022 走看看