Android 文件存储及常见问题解决
作者:lqh 发布时间:2023-07-12 13:25:45
标签:Android,文件存储
Android文件存储
看下网上随处可以搜到的文件存储套路
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
cacheDir=mContext.getExternalCacheDir().getPath();
}else {
cacheDir=mContext.getCacheDir().getPath();
}
fileOutputStream=new FileOutputStream(cacheDir+"/"+url);
这段代码肯定没有错误,但欺骗了多少年少的开发者。
当你这样存储文件的时候就会报,该文件不存在,你开始想这个路径是我获取的,又不是我写的,怎么会不存在,但获取仅仅是逻辑上的存在,而不代表真实存在,所以我们必须要在这个文件不存在的时候,去创建它的文件夹,并创建这个文件 ,所以标准写法应该是
private void initFile() {
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
cacheDir=mContext.getExternalCacheDir().getPath();
Log.d(TAG,"have SD");
}else {
cacheDir=mContext.getCacheDir().getPath();
Log.d(TAG," not have SD");
}
Log.d(TAG,cacheDir);
File file=new File(cacheDir);
if(!file.exists()) {
Log.d(TAG, "file no exists");
file.mkdirs();
}
}
这样的话,如果那个文件夹不存在的话,就去创建它,并且是递归创建,这个问题就完美解决了。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/u012926924/article/details/50936780
0
投稿
猜你喜欢
- 本文将介绍使用Spring Boot集成Mybatis并实现主从库分离的实现(同样适用于多数据源)。延续之前的Spring Boot 集成M
- 问题描述:java 中inputstream流 转成string,再将String转换会inputStream,下载下来的文件,内容损坏,例
- 本文实例讲述了Java实现的求解经典罗马数字和阿拉伯数字相互转换问题。分享给大家供大家参考,具体如下:古罗马帝国开创了辉煌的人类文明,但他们
- 同样该功能需要加载命名空间using System.Runtime.InteropServices;private const uint W
- 前言2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的:就像鲸鱼吃虾米一样,也许
- classProgram{ staticvoid Main() {&
- 建造者模式概述建造者模式(Builder Pattern)属于创建型模式。它是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同
- 传统的web项目,只需要在web.xml里配置多个即可,并且支持多个url-pattern在spring boot中,我们默认无需配置,系统
- 记录一下使用IDEA创建servlet并使用Tomcat本地部署的过程。需要安装好的软件首先IDEA社区版不支持Java EE,因此要使用U
- Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的
- 第一种给容器中的组件加上@ConfigurationProperties注解即可测试:@Component@ConfigurationPro
- 这篇文章主要介绍了java获取当前时间并格式化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- Mybatis防止sql注入原理SQL 注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL 语句 * 入到执行的实体字段中(例如,为
- SpringBoot入门Demo,一次深夜踩坑记录。springboot小项目开启后,访问端口无反应。首先看我的项目目录:项目的pom文件内
- Netty设置为Https访问SSLContextFactorypublic class SSLContextFactory {
- 又遇到了回调函数,这次打算写下来分享一下。所谓回调函数,或者在面向对象语言里叫回调方法,简单点讲,就是回头在某个时间(事件发生)被调用的函数
- webservice的POST和GET请求调用POST请求1.发送请求import java.io.DataOutputStream;imp
- 需要导入ant.jar包,apache网站(http://ant.apache.org/bindownload.cgi)下载即可。impor
- 本文实例讲述了C#双缓冲实现方法。分享给大家供大家参考,具体如下:// 该调用是 Windows.Forms &nb
- 本文实例讲述了java使用归并删除法删除二叉树中节点的方法。分享给大家供大家参考。具体分析如下:实现的思想很简单:first:找到要删除的节