我有一个这样声明的 byte[] :
byte[] buffer;
buffer = new byte[128];
然后,我通过蓝牙获得接收到的数据大小:
bytes = GlobalVar.mmInStream.read(buffer);
字节是接收数据的大小。我需要将缓冲区的大小调整为包含数据的大小。
由于您无法调整数组的大小(它们是不可变的),您需要创建一个副本:
byte[] data = new byte[bytes]
System.arraycopy(buffer, 0, data, 0, bytes)
但是,继续使用buffer
并阅读它直到bytes
出于任何原因需要它肯定会更有效。
您需要为缓冲区重新分配具有正确大小的内存,因为默认情况下数组的大小是固定的。编辑:如果缓冲区已经包含数据并且您不想丢失它们,您也可以使用:
buffer = Arrays.copyOf(buffer, newsize);
它将您当前的缓冲区数据移动到新分配的内存。