我想创建一个字节数组的二维数组(所以,我猜这是一个3d数组?)然后将存储在其中的每个数组写入文件。
我这样做是因为我需要在将它们写入文件之前对通过套接字接收的字节数组进行排序。
缓冲区中有一个我从套接字收到的标头,它告诉我2d数组中应该存储的值(缓冲区[0]和缓冲区[1])和总大小数组(在缓冲区[2]和缓冲区[3])
我觉得我应该可以做这样的事情
byte[][][] outputbuffer = new byte[(int)buffer[2]][(int)buffer[3]][];
声明数组,然后每次从套接字接收缓冲区时
outputbuffer[(int)buffer[0]][(int)buffer[1]][] = buffer;
填充数组,
countera=buffer[2];
counterb=buffer[3];
在我将数据写入文件时跟踪数组的大小。
然后,将其写入文件
for (i=0;i<countera ;i++ ) {
for (j=0;j<counterb ;j++ ) {
file.write(outputbuffer[i][j][]);
}
}
当我尝试声明这样的数组时,我收到“非法启动表达式”错误。有没有办法做到这一点?
感谢。
答案 0 :(得分:1)
byte[][][] outputbuffer = new byte[(int)buffer[2]][(int)buffer[3]][];
这不起作用,因为在创建它时必须给出数组大小。如果你不知道大小使用ArrayList
即ArrayList[][] outputBuffer
outputbuffer[i][j][]
应为Arrays.toString(outputbuffer[i][j])
。 []用于声明一个数组,而不是引用它。
同样适用于outputbuffer[(int)buffer[0]][(int)buffer[1]][]
,您应该逐个元素更新数组,即outputbuffer[(int)buffer[0]][(int)buffer[1]][0]
。