列表<字节[]>填充错误



在这段代码中,当循环完成时,数组中到处都填充了相同的值。经过一些调试,我注意到在每次add()时,数组都会完全填充相同的值。

List<byte[]> datas = new ArrayList<byte[]>();
// CODE ... //
FileInputStream fis = new FileInputStream(file);
byte[] buff = new byte[2];
int n;
while((n=fis.read(buff))!=-1){
     this.datas.add(buff);
}
fis.close();

我用字符串数组尝试了同样的代码,它工作正常。。。

为什么会发生这种情况,我该如何解决?

您正在用byte[]buff变量的相同实例填充ArrayList。因此,每次修改buff(在fis.read(buff)中),实际上都是在修改ArrayList中的所有项目。

尝试在每个iteartion:中创建一个新字节[]

List<byte[]> datas = new ArrayList<byte[]>();
// CODE ... //
FileInputStream fis = new FileInputStream(file);
byte[] buff = new byte[2];
int n
while((n=fis.read(buff))!=-1){
    this.datas.add(buff);
    buff = new byte[2];
}
fis.close();

最新更新