gpt4 book ai didi

Java ByteBuffer "put"方法 - 防止缓冲区溢出

转载 作者:行者123 更新时间:2023-12-01 17:31:18 25 4
gpt4 key购买 nike

我想按以下方式使用java nio ByteBuffer的put方法:

ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
ByteBuffer big = getAllData();

while (big.hasRemaining()){
small.put(big);
send(small);
}

put 方法会抛出缓冲区溢出异常,所以我修复它的方法是:

 ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
ByteBuffer big = getAllData();

while (big.hasRemaining()){
while (small.hasRemaining() && big.hasRemaining()){
small.put(big.get());
}

send(small);
}

我的问题是 - 有没有更好的方法来做到这一点,或者至少有一种有效的方法来做我想做的事?

最佳答案

好吧,您实际上可以调用 remaining() 来准确计算剩余的字节数,而不是使用 boolean 值 hasRemaining()

然后,您可以使用一个小型固定大小的中间字节数组以及基于数组的 get()put() 方法来传输字节“ block ” ,根据剩余空间大小调整放入中间缓冲区的字节数。

关于Java ByteBuffer "put"方法 - 防止缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10617607/

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