写数据到文件注意事项write方法

 

【问题1】

使用FileOutputStream类写数据到文件中,本来是很简单的实现,但就是生成的文件与原文件大小不一样,排查了一整天,才找到问题原因所在,

writer = new FileOutputStream(savePath);

byte[] buffer = new byte[2048];

while ((len = reader.read(buffer)) > 0){

writer.write(data, 0, size);

注意:1、不要使用write(),而应该使用write(data, 0, size),因为write()默认使用了buffer.length的长度(buffer容量的大小),而不是buffer的实际大小;

2、size应该等于len,而不能等于buffer.length,因为len与buffer.length可能不同

 

【问题2】

实现版本更新,把apk下载后存到sdcard没问题,但是apk存到/data/data/--packagename--/files目录下无法自动安装,如下提示
Unable to open zip '/data/data/com.ftrako.flashlight/files/flashlight.apk': Permission denied

分析:这是因为apk文件的访问权限问题,需要把apk访问权限对其它应用可读可写,如下(虽然方法已被Deprecated)

writer = context.openFileOutput(saveFileName, Context.MODE_APPEND|Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE);

 

posted on 2016-01-21 22:44  trako  阅读(265)  评论(0编辑  收藏  举报

导航