首页 > 编程语言 > 详细

《疯狂Java讲义》(三十三)---- NIO

时间:2017-02-16 11:12:39      阅读:188      评论:0      收藏:0      [点我收藏+]
  • Buffer

Buffer没有构造函数,只能通过static XxxBuffer allocate(int capacity) 来创建一个容量为capacity的XxxBuffer.

package com.ivy.nio;

import java.nio.CharBuffer;

public class BufferDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        CharBuffer buffer = CharBuffer.allocate(8);
        System.out.println("capacity:" + buffer.capacity());
        System.out.println("limit:" + buffer.limit());
        System.out.println("position:" + buffer.position());
        
        buffer.put("a");
        buffer.put("b");
        buffer.put("c");
        System.out.println("after adding three elements -------");
        System.out.println("position:" + buffer.position());
        buffer.flip();
        System.out.println("after flip -------");
        System.out.println("position:" + buffer.position());
        System.out.println("position(0):" + buffer.get());
        System.out.println("position:" + buffer.position());
        buffer.clear();
        System.out.println("after clear -------");
        System.out.println("limit:" + buffer.limit());
        System.out.println("position:" + buffer.position());
        System.out.println("position(2):" + buffer.get(2));
        System.out.println("position:" + buffer.position());
    }

}

三个重要概念,容量,界限,位置:

  1. 容量(capacity):缓冲区的容量,最多可以存多少数据。
  2. 界限(limit):第一个不应该被读出或写入的缓冲区位置索引,也就是说,位于limit后的数据既不可读,也不可写。
  3. 位置(position):用于指明下一个可以被读出的或写入到缓冲区位置索引,当读数据时,positon的值恰好等于已经读了多少数据。

当Buffer装入数据解暑后,调用Buffer的flip方法,该方法将limit设置为position所在的位置,将position设为0,这样buffer就为输出数据做好了准备;当Buffer输出数据结束后,Buffer调用clear方法,它并不是清空数据,仅仅将position位置置为0,将limit置为capacity,这样为再次向Buffer中装入数据做好准备。

 

《疯狂Java讲义》(三十三)---- NIO

原文:http://www.cnblogs.com/IvySue/p/6404329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!