byte[] 的数组列表 Java

Arraylist of byte[] Java

我想知道是否可以将一个文件的多个 byte[] 添加到数组列表中 然后将里面的 btye[] 写回文件。

抱歉含糊不清,这是我第一次发帖 下面是我的代码的一部分。 输出文件似乎比原始文件大,我似乎无法弄清楚为什么

ArrayList<byte[]> tempStorage = new ArrayList<byte[]>();
byte[] byteArray;

while (n < length && n != -1)
{
    byteArray = new byte[960];
    n = in.read(byteArray, 0, 960);
    tempStorage.add(byteArray);
    count++;
}

for (byte[] temp: tempStorage) {
    fileOuputStream.write(temp);
}
fileOuputStream.close();

假设您的数组大小为 4,文件大小为 6。您读取前 4 个字节,将其放入数组并将该数组存储在列表中。然后你正在读取最后 2 个字节(因为大小为 6)并将其存储在大小为 4 的数组中。这意味着最后一个数组的某些部分将为空 并且应该被忽略 .

但是在你的

for (byte[] temp: tempStorage) {
    fileOuputStream.write(temp);
}

您正在完全写入最后一个数组,包括应该忽略的部分(因此您将写入 4 个字节而不是 2 个字节,这将使您的文件更大)。

所以对于 last temp 你应该使用 write 方法来描述我们想要使用的数组中有多少字节(你在 n 变量,因为你在 n = in.read(byteArray, 0, 960); 中得到它)。

所以最后 temp 尝试更像 fileOuputStream.write(temp,0,n)