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

        }
    }

     

  • 相关阅读:
    每日汇报
    每周总结
    构建之法阅读笔记2
    每周总结
    每周总结
    体温上报软件开发
    体温上报软件开发
    构建之法阅读笔记1
    体温上报软件开发
    大二下学期团队项目(爬取豆瓣电影)
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14414187.html
Copyright © 2020-2023  润新知