java - 切片 ByteBuffer 并将数据附加到它的有效方法

标签 java performance nio bytebuffer

我有一个由数组支持的现有 ByeBuffer。现在我想从这个 ByteBuffer 的偏移量到末尾获取一部分,然后将一些数据(存储在其他字节数组中)附加到这个切片的 ByteBuffer 的末尾。假设我在 ByteBuffer 中有“偏移量”和需要附加到 ByteBuffer 的字节数组“缓冲区”。这就是我现在正在做的 -

                byte[] prevArray = previousByteBuffer.array();

                byte[] newArray = new byte[prevArray.length-offset+buffer.length];
                for(int i=offset; i<prevArray.length; i++){
                    newArray[i-offset] = prevArray[i];
                }
                for(int i=prevArray.length; i<(prevArray.length+len); i++){
                    newArray[i-offset] = buffer[i-prevArray.length];
                }
                ByteBuffer byteBuffer = ByteBuffer.wrap(newArray);

我认为我正在做的事情非常低效。实现这一目标的有效方法是什么?谢谢。

最佳答案

您可以使用 System.arraycopy。

我们的你可以使用

int len = prevArray.length-offset+buffer.length;
ByteBuffer bb = ByteBuffer.allocate(len);
bb.put(previousByteBuffer);
bb.put(buffer, offset, buffer.length - offset);

关于java - 切片 ByteBuffer 并将数据附加到它的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855415/

相关文章:

java - 如何检测流中的第一个文件

java - 当线程 T1 加入线程 T2 并且 T2 被中断时会发生什么

performance - 限制服务器端“ meteor ”中的结果数量?

iphone - Sqlite 的 iOS-5 中的性能问题

java.nio channel 缓冲区流术语

java - writing 和 writing with flush 有什么区别?

java - 如何在 Java 中将 Long 转换为 int?

Java这就是多重​​继承吗?或者可以接受吗?

java - 接口(interface)的静态字段和最终字段的含义

performance - Fortran - 函数与子程序性能