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

Android 读取文件数据

2013-07-29 11:45 176 查看
byte[]buffer=newbyte[1024];
FileInputStreamfis=null;
try{
fis=newFileInputStream(dir+fileName);
while(fis.read(buffer,0,buffer.length)!=-1){
showInfo(buffer);
buffer=null;
buffer=newbyte[1024];
}
}catch(IOExceptione){
e.printStackTrace();
}

问题:使用上面代码进行读取数据,一开始无红色字体两行代码时,当文件超过1024B的时候,发现读取的数据并不是完整的文件数据信息,

而是会多出一些数据。

定位:通过比对数据发现多出的数据恰好是上一次读取的数据末尾部分,怀疑是再次调用fis.read(buffer,0,buffer.length)接口时,buffer

并不会自动清除,数据还是保存着上次的数据,从而导致最后获取到的数据中有上一次读取的数据。

验证:添加红色两行代码进行初始化buffer,读取数据正常。通过跟踪read源码未找到对数据初始化部分。

总结:在涉及到需要循环读取某数据时,不管接口的处理如何,最好都要对buffer进行初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: