gpt4 book ai didi

java - Java 中 byte[] 的数组列表

转载 作者:行者123 更新时间:2023-12-01 22:04:13 25 4
gpt4 key购买 nike

我想知道是否可以将文件的多个 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 个字节,这将使您的文件更大)。

因此,对于最后温度,您应该使用 write方法将描述我们想要使用该数组中的多少字节(您在 n 变量中拥有该信息,因为您在 n = in.read(byteArray, 0, 960); 中获取了它)。

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

关于java - Java 中 byte[] 的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com