美文网首页
JAVA NIO BUFFER (四)buffer.compac

JAVA NIO BUFFER (四)buffer.compac

作者: ShootHzj | 来源:发表于2017-08-19 00:24 被阅读35次

    有一些情况,你只想把Buffer的一部分输出,然后下次再接着操作,下次操作的时候下标也要从0开始。这么做的话,就必须将未读的数据左移至开头,这样做毫无疑问是低效率的,如果一定要这么做的话,Buffer提供了compact方法

      buffer.compact();
    

    假设你输出了两个字符那么现在概念图就会变成这样:


    48BBB9F226F5DD44A7CE940747B47BDE.jpg

    然后你调用了compact方法


    4A7013E3CD5086017F254507F2F79C47.jpg

    4,5都会保持不变,还是同样的道理,Buffer不会做那些看上去合理但并没有用的操作。

    Mark方法,允许buffer记下一个位置,如果reset被调用,那么position会转移到mark的位置。如果在mark还未指定的情况下调用reset,会抛出InvalidMarkException。如果你调用一些buffer方法,mark标记会被丢弃,比如rewind,clear和flip。如果调用带参数的limit或者position方法,如果该参数值在mark标记之前,那么mark也会废弃。

    相关文章

      网友评论

          本文标题:JAVA NIO BUFFER (四)buffer.compac

          本文链接:https://www.haomeiwen.com/subject/wcyzrxtx.html