在这段代码中,当循环完成时,数组中到处都填充了相同的值。经过一些调试,我注意到在每次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();