我有一个由数组支持的现有ByeBuffer。现在我想从一个偏移量中获取这个ByteBuffer的一部分到最后,然后将一些数据(存储在其他字节数组中)附加到这个分片的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);
我认为我所做的是非常低效。什么是实现这一目标的有效方式?谢谢。
经典的XY问题。你试图完成的实际任务是什么? – EJP
@EJP实际的情况是我正在写一个函数,它将从文件中读取一个字节范围,并且这个范围被输入到我的函数中。每次函数被调用时,我都会检查范围以查看它是否与我读取的最后一个数据重叠,如果是,我不想重新读取重叠的数据。因此,切片并追加。 – Parag
我建议它会更快*不*要做到这一点。让文件系统进行缓存。它真的很擅长这个。或者如果文件不是很大,可以使用'MappedByteBuffer'。我还将注意力集中在['ByteBuffer.slice()'](http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#slice())方法。 – EJP