gpt4 book ai didi

java - ByteBuffer翻转方法的目的是什么? (为什么它被称为 "flip"?)

转载 作者:IT老高 更新时间:2023-10-28 11:43:54 25 4
gpt4 key购买 nike

为什么ByteBuffer的flip()方法叫“flip”?这里“翻转”了什么?根据 apidoc,连续两次翻转不会恢复原始状态,并且多次翻转可能会使 limit() 趋于为零。

我可以以某种方式“取消翻转”以重用超出限制的字节吗?

我可以将尾部与其他一些数据连接起来吗?

最佳答案

ByteBuffer 的一个相当常见的用例是逐个构造一些数据结构,然后将整个结构写入磁盘。 flip 用于将 ByteBuffer 从“从 I/O 读取”(putting)翻转到“写入 I/O”(getting):在使用一系列 put 填充 ByteBuffer 后,flip 会设置缓冲区到当前位置并将位置重置为零。这具有使缓冲区中的 future getwrite 将所有 put 的所有内容写入缓冲区而不是更多的效果。

在完成 put 之后,您可能希望重用 ByteBuffer 来构造另一个数据结构。要“取消翻转”它,请调用 clear。这会将限制重置为容量(使所有缓冲区都可用),并将位置重置为 0。

那么,一个典型的使用场景:

ByteBuffer b = new ByteBuffer(1024);
for(int i=0; i<N; i++) {
b.clear();
b.put(header[i]);
b.put(data[i]);
b.flip();
out.write(b);
}

关于java - ByteBuffer翻转方法的目的是什么? (为什么它被称为 "flip"?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com