Java Buffer.clear() 方法及代码示例

清除此缓冲区: 位置设置为0, 限制的值设置为容量的值, 丢弃标记.

定义

public Buffer clear()

返回值

返回当前 Buffer

说明

应该在使用一系列通道读取或放置操作来填充此缓冲区之前调用此方法. 例如:

buf.clear(); // 准备读取缓冲区
in.read(buf); // 读取数据

看本方法命名, 好像它擦除缓冲区中的数据一样, 但实际上并没有, 因为它最常用于可能是这种情况的情况.

示例

使用 clear() 方法清理缓冲区的示例

package com.yi21.buffer;

import java.nio.Buffer;
import java.nio.ByteBuffer;

public class Yi21BufferClear {

    public static void main(String[] args) {
        
        ByteBuffer buffer = ByteBuffer.wrap("Hello 21yi".getBytes());
        showStatus(buffer);

        System.out.println("get且设置限制后:");
        buffer.get();
        buffer.get();
        buffer.get();
        buffer.limit(5);
        showStatus(buffer);

        System.out.println("clear后:");
        buffer.clear();
        showStatus(buffer);

    }

    private static void showStatus(Buffer buffer) {
        System.out.println("缓冲区限制: " + buffer.limit());
        System.out.println("缓冲区位置: " + buffer.position());
    }

}

执行结果为 :

缓冲区限制: 10
缓冲区位置: 0
get且设置限制后:
缓冲区限制: 5
缓冲区位置: 3
clear后:
缓冲区限制: 10
缓冲区位置: 0