当前位置:  开发笔记 > 编程语言 > 正文

将字节从一个ByteBuffer传输到另一个ByteBuffer

如何解决《将字节从一个ByteBuffer传输到另一个ByteBuffer》经验,为你挑选了1个好方法。

将ByteBuffer中尽可能多的字节bbuf_src放入另一个ByteBuffer bbuf_dest(以及知道传输了多少字节)的最有效方法是什么?我正在尝试,bbuf_dest.put(bbuf_src)但似乎想抛出一个BufferOverflowException,当我需要时,我现在无法从Sun获得javadocs(网络问题).> :(唉.


编辑:darnit,@ Richard的方法(在后备数组中使用put()bbuf_src)如果bbuf_src是ReadOnly缓冲区将无效,因为您无法访问该数组.在那种情况下我该怎么办?



1> Jules..:

正如您所发现的那样,获取后备阵列并不总是有效(对于只读缓冲区,直接缓冲区和内存映射文件缓冲区,它会失败).更好的选择是复制源缓冲区并为要传输的数据量设置新的限制:

int maxTransfer = Math.min(bbuf_dest.remaining(), bbuf_src.remaining());
// use a duplicated buffer so we don't disrupt the limit of the original buffer
ByteBuffer bbuf_tmp = bbuf_src.duplicate ();
bbuf_tmp.limit (bbuf_tmp.position() + maxTransfer);
bbuf_dest.put (bbuf_tmp);

// now discard the data we've copied from the original source (optional)
bbuf_src.position(bbuf_src.position() + maxTransfer);

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有