每个程序在手机上运行时,或多或少会需要使用一些手机的存储空间去存储一些用户数据或临时缓存数据等等,通常在存储设备上创建文件或目录,都会成功。但也会有失败的时候,下面会列举一些创建文件或目录失败,常见和奇葩的原因。


1.权限忘记添加:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.使用mkdir函数创建目录,但其父目录未存在,则会创建失败,使用的时候需要注意,推荐用mkdirs函数。
 
3.在有权限的情况下,在SD卡跟目录下创建目录或文件失败,但是在SD卡的Anroid目录下创建目录或文件可以成功,原因未知。
 
4.最后一种最奇葩,在有些手机上(例如华为某机型)会突然莫名的不能在SD卡上创建文件,不论何种方式都会失败,只有重启手机后,一切恢复正常,此问题暂时没有找到原因,应该是设备的问题…
 
所以还是在SD卡的Anroid目录下创建目录或文件存储的成功率是最高的,通过Context.getExternalFilesDir()获取,对应路径是”SDCard/Android/data/应用包名/files/”。
 
关于SD卡的读写权限,原则上是能少申请就少申请。在API大于19的时候,使用getExternalFilesDir获取的目录,可以不申请权限。小于19则需要申请,具体应该这样写

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>

在Android中该在哪存储或缓存程序数据?
若缓存图片,文字数据等临时文件,推荐使用getExternalCacheDir获取的目录;若存储数据的话推荐用getExternalFilesDir目录。以上目录当程序卸载时也会自动清理,非常方便。

参考文章:
Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)

Android---在SD卡上创建文件或目录总结相关推荐

  1. android 无法显示SD卡目录,Android studio无法在SD卡上创建新目录?

    我使用名为scanlibrary的库来扫描照片,然后将它传递给tess-two来执行OCR过程.问题是,在目录"ScanDemoExample"不被创建因此tessdata文件不会 ...

  2. 解决Android Studio读取不了SD卡上的文件

    问题: 上课要求练习操作SD卡上的文件,界面如图所示,要求点击保存按钮会出现success的toast,并可以读取文件内容.但是我一直出现的都是failure,原因是不能执行这句代码:Environm ...

  3. mac os android sd卡,如何在Mac OS下永久删除SD卡上的文件?

    Mac数据恢复软件可以轻松恢复已删除或格式化的数据.因此,在Mac OS下从SD卡删除文件时,Mac数据恢复软件也可以恢复删除的文件.在某些情况下,仅删除是不够的.例如,当您要丢弃旧的SD卡时,应确保 ...

  4. 复制SD卡上的文件以及一些其他操作

    今天项目练习的时候遇到一个需要复制SD卡上文件的需求,于是尝试着写了一个类来实现,代码如下: package com.jeremy.icampus.utilitys.file;import java. ...

  5. 如何访问嵌入式设备sd卡上的文件

    sd卡上的文件属于硬件上真实的文件,想要访问必需先挂载. 1.检测系统有无自动挂载   命令:cat /proc/mounts 如果自动挂载成功会显示这样 /dev/mmcblk1p1 是sd卡位置, ...

  6. 在被管理节点上创建文件或目录

    被管理节点上创建文件或目录 一.修改文件并将其复制到主机 1.描述文件的模块 2.files模块的自动化示例 2.1 确保受管主机上存在文件 2.2 修改文件属性 2.3 使SELinux文件上下文更 ...

  7. 在被管理主机上创建文件或目录

    文章目录 在被管理主机上创建文件或目录 修改文件并将其复制到主机 files模块的自动化示例 确保受管主机上存在文件 修改文件属性 使SELinux文件上下文更具持久性 在受管主机上复制和编辑文件 从 ...

  8. android读写sd卡代码,android读写SD卡中的文件 demo

    有时,我们需要将更大的文件保存下来,就不能用手机内置的存储空间,毕竟是有限的,所以将文件保存在SD卡中. 要读写SD卡,首先要知道手机上是否有SD卡,且是否可读写 String str = " ...

  9. android 输入法sd卡,如何android扫描SD卡列出大文件

    闲来无事,正好以前老碰到这个磁盘空间满的问题 背景 安卓手机用了一段时间之后经常就报磁盘空间不够了,当然可以用手机管家,或者缓存/应用清理工具释放空间,但是还是会有莫名其妙的空间不够:这是由安卓的属性 ...

最新文章

  1. [Usaco2009 Open]工作安排Job
  2. qt+visa实现程控实例
  3. 2021上饶市高考中考成绩查询,2021年上饶中考成绩公布查询时间 上饶中考成绩查询方式入口...
  4. 计算机在社区健康档案管理中的作用,某社区卫生中心对辖区居民的健康档案信息进行电子化。一直建档居民的年龄范围在1..._考试资料网...
  5. 平顶山学院计算机分数线,2016年平顶山学院艺术类专业录取分数线
  6. apache poi excel显示 base64 图片_数据处理之带图片Excel数据处理解惑
  7. linux系统电源时钟,linux电源管理的一些梳理
  8. 合成迪丽热巴下海_热巴生图颜值回春,被韩媒吹上天,她是找了杨幂的医生?...
  9. (152)IES光源概述文件
  10. premiere软件的使用(快速入门,迅速了解常用功能、常用快捷键、常用插件)——wsdchong
  11. SRE问题排查四步法——以建立HTTPS连接失败问题排查为例
  12. 新一代超低功耗STM32U5,到底有啥亮点?
  13. Deferred Shading介绍
  14. 停息挂账一定要付首付款吗_什么是停息挂账?停息挂账能解决问题吗?
  15. 微服务启动报错:Shutting down DiscoveryClient
  16.  定义一个变量,是一个三位数,求各个位数的和
  17. 1.2 二维三维空间向量组的线性组合
  18. noip模拟题11.5
  19. 解决在IDEA中进行结巴分词产生Exception in thread “main“ ExceptionInInitializerError at ()错误
  20. Java获取当年以及任意一年的第一天和最后一天 获取当天的开始时间和结束时间 自动获取去年的年份 常用于每年的数据统计

热门文章

  1. 计算机无法识别3.0u盘启动,USB3.0的U盘在usb3.0的接口为什么不能启动WINPE
  2. 计算机维修和应用有什么区别,计算器与计算机的区别有哪些,计算器常见故障以及维修方法...
  3. 分享几个设计感爆棚的网站,快放进收藏夹里吃灰吧!
  4. 37游戏盒子android,37游戏,37游戏盒子安卓版
  5. 系统缺失字体: Symbol、Wingdings、Wingdings2...
  6. bzoj3864-hdu4899-Hero meet devil
  7. 该命令不是内部或外部命令的解决方法
  8. 企业CIO如何做好免费ERP系统的选型
  9. 常用的软件测试工具大全
  10. 启扬智慧电梯物联网解决方案,解决运营、维保、监管难题