您的位置:首页 > 移动开发 > Android开发

android用数组保存输出流的数据包的问题(最后等到的所有的都变成最后一个包)

2016-02-04 16:13 489 查看
以下代码为保存代码

List piclist=new ArrayList<byte[]>();
while((len=fileRead.read(filedata, 16, DATD_LEN-16))!=-1)
{
piclist.add(filedata);
}


这样最后输出piclist的值会发现个数是对的,但是每条数据都是一样的都是最后一次添加的filedata。因为filedata为一个复用的对象,而List里保存的只是对象的索引。所以最后输出时会通过索引去找filedata。因此找到的永远都为最后一次的filedata的值。

正确的解决方法为:

if(mFile.length() %(DATD_LEN-16)!=0){
TotalCount=(int)(mFile.length() /(DATD_LEN-16))+1;
}else{
TotalCount=(int)(mFile.length() /(DATD_LEN-16));
}


首先获取文件一共被分多少个包, 然后新建一个长度为TotalCount的List

for(int i=0;i<TotalCount+1;i++){
byte[] filedata = new byte[DATD_LEN];
piclist.add(filedata);
}


这样写入List就不会有问题了

   while((len=fileRead.read(piclist.get(OrderID), 16, DATD_LEN-16))!=-1)

{
}


但是这样会传进很多的byte[]对象。不过目前没有找到更好的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: