Java如何在写入和读取之间更改缓冲模式?

可以读取或写入缓冲区。为了在写模式和读模式之间切换模式,我们flip()在缓冲区上使用了方法调用。

在写模式与读模式之间进行切换时,您应该了解的几件事。缓冲器具有capacity,position和limit属性。该capacity会一直在写或读模式相同。但是position和limit会在每种模式下存储不同的信息。

在写模式下,limit它将等于容量,但在读模式下,limit将等于写入最后数据的最后位置。在position对写入模式地步的数据将在缓冲区中写入。调用flip()方法时,position将设置为0,limit将设置为的最后一个值position。

package org.nhooo.example.io;

import java.nio.CharBuffer;

public class BufferFlip {
    public static void main(String[] args) {
        CharBuffer buffer = CharBuffer.allocate(1024);
        System.out.println("capacity = " + buffer.capacity());
        System.out.println("position = " + buffer.position());
        System.out.println("limit    = " + buffer.limit());

        buffer.put("Java NIO Programming");

        System.out.println("capacity = " + buffer.capacity());
        System.out.println("position = " + buffer.position());
        System.out.println("limit    = " + buffer.limit());

        buffer.flip();
        System.out.println("capacity = " + buffer.capacity());
        System.out.println("position = " + buffer.position());
        System.out.println("limit    = " + buffer.limit());
    }
}

该程序将打印以下结果:

capacity = 1024
position = 0
limit    = 1024
capacity = 1024
position = 20
limit    = 1024
capacity = 1024
position = 0
limit    = 20