关于Android写入文件失败的问题

关于Android写入文件失败的问题

由于本人在Android开发的时候,经常性的写入文件,每次都写入异常,导致写入文件失败,经过慢慢的研究和反复的测试,总结出写入问题的失败的原因(比较菜,写的不好勿喷):

代码块

/**
* 把Assets的下面的文件写入到其他文件
* @param context
* @param assetsFileName Assets下面的文件名称
* @param filePath 需要写入的文件路径
* @return
*/
public static boolean writeAssetsFileToFile(Context context,String assetsFileName,String filePath){
if(context == null || TextUtils.isEmpty(assetsFileName) || TextUtils.isEmpty(filePath)){
return false;
}
File file = new File(filePath);
if(!file.exists()){
file.mkdirs();
}
try {
InputStream open = context.getResources().getAssets().open(assetsFileName);
FileOutputStream fos = new FileOutputStream(filePath + assetsFileName);
byte[] buffer = new byte[1024];
int count = 0;
while ((count = open.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
open.close();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}

我写的这个是把assets文件中文件写入到sdk中,其他的也类似.
我相信不少人在写入文件的时候在
FileOutputStream fos = new FileOutputStream(filePath + assetsFileName);
这一行代码就异常了,也有人非了九牛二虎之力,最后还得请教大神;
下面我来说说写入成功的时候需要注意的事项:
1.android6.0以上的必须开发读写权限,不懂的请求百度,本人推荐比较好用的权限的第三方处理是:AndPermission.
2.首先要确保源文件确实存在.
3.方法中的这个(filePath)参数,是文件夹,一定是文件夹,不是文件.
然后还得判断文件夹是否存在,不存在就创建:if(!file.exists()){ file.mkdirs()};
4.这一步比较重要,
FileOutputStream fos = new FileOutputStream(filePath + assetsFileName);
很多人是直接这样写new FileOutputStream(filePath),因为他的filePath是一个文件,例如:filePath=”sdcard//Fonts/仿宋_GB2312.ttf”.如果这个文件存在直接写出这样是没有问题,但是如果这样第一次创建,文件不存在的话,肯定会报异常;最安全的写法是:
FileOutputStream fos = new FileOutputStream(“sdcard//Fonts/”+ “仿宋_GB2312.ttf”); 这样写不管是不是第一次都不会出现问题.(前提是文件夹存在);

写的不好,勿喷,本人经过试验完全可以用.

为了营造一个比较好的网络资源环境,不要进行复制然后在写到博客里,请勿转载.

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值