Buffer mark()方法处理标记

方法Buffer mark()的作用:在此缓冲区的位置设置标记。标记有什么作用呢?

缓冲区的标记是一个索引,在调用reset()方法时,会将缓冲区的position位置重置为该索引。标记(mark)并不是必需的。定义mark时,不能将其定义为负数,并且不能让它大于position。如果定义了mark,则在将position或limit调整为小于该mark的值时,该mark被丢弃,丢弃后mark的值是-1。如果未定义mark,那么调用reset()方法将导致抛出InvalidMarkException异常。

 

import java.nio.ByteBuffer;

public class Test5{
    public static void main(String[] args) {
      byte[] bytes = new byte[] {1,2,3,4,5,6,7,8,9};
      ByteBuffer buffer = ByteBuffer.wrap(bytes);
      System.out.println("buterbuffer.capacity="+buffer.position());

      System.out.println();

      buffer.position(1);
      buffer.mark();
      System.out.println("buterbuffer.capacity="+buffer.position());

      buffer.position(2); //改变位置
      buffer.reset();
      System.out.println();
      System.out.println("buterbuffer.capacity="+buffer.position());
    }
}

  

 

posted @ 2022-04-07 14:49  孤独的执行者  阅读(195)  评论(0)    收藏  举报