java中的可变字节数组

时间:2015-07-07 11:41:16

标签: java bytearray bytebuffer

我正在阅读具有结构的二进制文件:

(整数)(字节[])

整数表示接下来的字节数组的大小。为了避免将所有时间分配给一个字节数组,我只是在下一次读取的大小大于最后一个时分配。

int sz = rawBuffer.getInt();
if (sz > lSz){  //lSz is a class variable
   buffer = new byte[sz];
   lSz = sz;
}
rawBuffer.get(buffer, 0, sz);

问题是缓冲区始终具有最大大小。如果读取大小为5的字节数组和大小为3的字节数组,则buffer.length将为5。

无论如何都要重新调整缓冲区大小而不需要重新定位?或者更好的是拥有另一个保持数组有效大小的结构,例如ByteBuffer。

1 个答案:

答案 0 :(得分:1)

我认为如果没有重新分配的过程,就有办法调整缓冲区的大小。因此,如果缓冲区的大小对您很重要,您可以尝试更改

if (sz > lSz){  //lSz is a class variable
   buffer = new byte[sz];
   lSz = sz;
}

if (sz != lSz){
   buffer = new byte[sz];
   lSz = sz;
}

祝你好运。