Android文件存储目录结构

2023-11-01

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。

这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。

并且在API 6.0之后,根目录文件存储是需要用户授权的,就算你在AndroidManifest.xml中配置了存储权限,用户不授权也是写不进去了。

SD卡读写权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?


通过context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据

如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。并且

这个方法获得的文件存储路径适用于6.0以后系统,只要AndroidManifest.xml配置读写权限了,就不需要用户再授权了。 

正常开发中获取存储路径的方法是:

public String getDiskCacheDir(Context context) {  
    String cachePath = null;  
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())  
            || !Environment.isExternalStorageRemovable()) {  
        cachePath = context.getExternalCacheDir().getPath();  
    } else {  
        cachePath = context.getCacheDir().getPath();  
    }  
    return cachePath;  
}  

可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。

设置->应用->应用详情里面的”清除数据“与”清除缓存“选项分别对应的是data/data/<application package>/和data/data/<application package>/cache


external storage (外部存储):

Environment.getExternalStorageDirectory()SD根目录:/mnt/sdcard/ (6.0后写入需要用户授权)

context.getExternalFilesDir(dir)路径为:/mnt/sdcard/Android/data/< package name >/files/… 

context.getExternalCacheDir()路径为:/mnt/sdcard//Android/data/< package name >/cache/…

internal storage(内部存储):

context.getFilesDir()路径是:/data/data/< package name >/files/…

context.getCacheDir()路径是:/data/data/< package name >/cach/…


红米2A:
根目录
根目录->system-----------------------------------------------------------Environment.getRootDirectory()
根目录->system->app(放置系统自带软件.apk文件)
根目录->cache-------------------------------------------------------------Environment.getDownloadCacheDirectory()
根目录->data(需要root)--------------------------------------------------Environment.getDataDirectory()
根目录->data->app(放置自己安装APP.apk文件)
根目录->data->data-------------------------------------------------------Environment.getDataDirectory()
根目录->data->data->com.luoguopeng.ldrone(联想目录:/data/user/0/com.luoguopeng.ldrone/cache)
根目录->data->data->com.luoguopeng.ldrone->app_Map_Assert
根目录->data->data->com.luoguopeng.ldrone->cache---------context.getCacheDir()
根目录->data->data->com.luoguopeng.ldrone->database
根目录->data->data->com.luoguopeng.ldrone->files
根目录->data->data->com.luoguopeng.ldrone->lib(放置.so)
根目录->data->data->com.luoguopeng.ldrone->share_prefs
根目录->mnt/shell/emulated/0------------------------------------------Environment.getExternalStorageDirectory()
根目录->mnt/shell/emulated/0->Android
根目录->mnt/shell/emulated/0->Android->data
根目录->mnt/shell/emulated/0->Android->data->com.luoguopeng.ldrone
根目录->mnt/shell/emulated/0->Android->data->com.luoguopeng.ldrone->cache--------context.getExternalCacheDir()
根目录->mnt/shell/emulated/0->Android->data->com.luoguopeng.ldrone->files/DCIM----context.getExternalFilesDir(Environment.DIRECTORY_DCIM)
根目录->mnt/shell/emulated/0->DCIM---------------Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android文件存储目录结构 的相关文章

随机推荐

  • MIPI DPHY接口的若干种实现方案概述

    一 MIPI DPHY接口简介 MIPI DPHY是MIPI的一种物理层 其协议层有CSI和DSI两种 其中CSI主要用于图像接入 如图像传感器Sensor DSI主要用于图像输出 如手机屏幕等 有关MIPI DPHY及CSI和DSI的技术
  • 涡阳2021年高考成绩查询,2021年涡阳县高考状元名单资料,今年涡阳县高考状元多少分...

    高考状元一直都备受大家的关注 不管对于学校和还是当地教育系统 都是一件荣誉的事情 高考状元历来都诞生于艳羡的目光中 大家为他们的高分叫好 羡慕他们可以一步踏入国内知名学府 本文高考升学网为大家介绍历年涡阳县高考状元的相关资料和考分情况 看看
  • 互斥锁、读写锁、自旋锁、条件变量的特点总结

    读写锁特点 1 多个读者可以同时进行读 2 写者必须互斥 只允许一个写者写 也不能读者写者同时进行 3 写者优先于读者 一旦有写者 则后续读者必须等待 唤醒时优先考虑写者 互斥锁特点 一次只能一个线程拥有互斥锁 其他线程只有等待 互斥锁是在
  • 新闻管理系统

    1 项目介绍 新闻管理系统拥有两个角色 分别为用户和管理员 具体功能如下 2 项目技术 后端框架 Jfinal mvc 前端框架 Freemarker html css JavaScript JQuery 3 开发环境 JAVA版本 JDK
  • css transparent张鑫旭,【灵感杂谈】张鑫旭和他的《CSS世界》

    原标题 灵感杂谈 张鑫旭和他的 CSS世界 说到本书的作者 前端圈里没见过他的人有很多 但没读过他文章的人很少 他就是很多前端同行眼中的 张老师 张大神 张鑫旭 以下简称 张 前一段时间 去参加 前端体验大会 有一位张的同事作为分享嘉宾 当
  • 清风数学建模学习笔记——熵权法(客观赋权法)

    熵权法 熵权法是一种客观赋权方法 客观 数据本身就可以告诉我们权重 依据的原理 指标的变异程度越小 所反映的信息量也越少 其对应的权值也应该越低 本文借鉴了数学建模清风老师的课件与思路 如果大家发现文章中有不正确的地方 欢迎大家在评论区留言
  • Vue.js用cdn方式引入

    Vue js用cdn方式引入 前言 注意本次用cdn形式引入js学习 有node js的玩家可以用node js CDN下载地址 https vuejs org js vue min js以及Node js Vue系列 windows下np
  • 解决asterisk sip错误提示Not Acceptable Here(488)或Not Found(404)

    安装好asterisk后对接到VOS3000使用 可发现VOS死活送不通asterisk 于是回头检查asterisk系统是否安装正确以及是否正常工作 经过反复检查 都没有发现问题 可VOS上面话单显示 开始一直显示488错误 于是我看了下
  • policy gradient详解(附代码)

    1 引言 policy gradient是强化学习中一种基于概率策略的方法 智能体通过与环境的交互获得特定时刻的状态信息 并直接给出下一步要采取各种动作的概率 然后根据该状态动作的策略分布采取下一步的行动 所以每种动作都有可能被选中 只是选
  • 计算 属性

    一 定义 计算属性就是当其依赖属性的值发生变化时 这个属性的值会自动更新 预支相关的DOM部分也会同步自动更新 有缓存 二 用法 1 基础用法 computed getN return this n 1 2 传递参数 返回一个函数 h1 t
  • mmdetection源码阅读

    阅读从tools train py开始 功能模块 Register类 位置 utils registry py 用于注册起到相同作用的 例如coco voc数据类 模型类 数据处理流程类 类别 具体功能是这样的 Register的 init
  • 很不起眼的6个bug,90%的程序员就算写了10年代码也肯定都踩过!

    文章来源 https juejin cn post 7120570066856312839 前言 作为Java程序员的你 不知道有没有踩过一些基础知识的坑 有时候 某个bug查了半天 最后发现竟然是一个低级错误 有时候 某些代码 这一批数据
  • 由jar包冲突导致的logback日志不输出

    文章目录 一 前言 1 resource下面有logback配置但没有生成日志 2 去掉Log4j依赖引用 3 java是如何加载logback 3 1 回顾下我们获取日志对象是如何获取的 一 前言 最近升级一个老项目 发面日志没有按照预期
  • Hydra的基本使用

    R 根据上一次进度继续破解 S 使用SSL协议连接 s 指定端口 l 指定用户名 L 指定用户名字典 文件 p 指定密码破解 P 指定密码字典 文件 e 空密码探测和指定用户密码探测 ns C 用户名可以用 分割 username pass
  • CentOS-Linux安装 XS-Tools (XenServer)

    1 在Xencenter里光驱换成xs tools iso 2 登陆SSH root ns0 cd mnt root ns0 mnt ls root ns0 mnt mkdir xs tools root ns0 mnt mount dev
  • 在解决方案中所使用 NuGet 管理软件包依赖

    使用程序包恢复功能可以在提交源代码时 不需要将代码库提交到源代码管理中 大幅减少项目的尺寸 所有NuGet程序包都存储在解决方案的Packages文件夹中 要启用程序包恢复功能 可右键单击解决方案 注意 不是右键单击项目文件 并选择 Ena
  • C++的const成员函数

    C 的const成员函数 const成员函数是什么 实例 总结 const成员函数是什么 通常我们看到的const成员函数格式类似于 int QueryBalance int iBalanceVal const 简单的说 const成员函数
  • C++学习(三四六)cygwin 交叉编译Android gdal

    官方说gdal的android版本是仍在做的一项工作 BuildingForAndroid GDALhttps trac osgeo org gdal wiki BuildingForAndroid cygwin android ndk r
  • 快速幂计算x的n次幂,递归版本、迭代版本、python实现

    递归 分治思想 二分 def myPow self x float n int gt float def quick pow x n if n 1 return x half quick pow x n 2 y half half if n
  • Android文件存储目录结构

    应用程序在运行的过程中如果需要向手机上保存数据 一般是把数据保存在SDcard中的 大部分应用是直接在SDCard的根目录下创建一个文件夹 然后把数据保存在该文件夹中 这样当该应用被卸载后 这些数据还保留在SDCard中 留下了垃圾数据 并