Android内部存储和外部存储的几个概念(内部存储空间和外部存储空间、SD卡、storage/emulated、MediaProvider的internal.db与external.db)

所有Android设备都有两个文件存储区域:内部存储空间和外部存储空间,这些名称是在Android早期确定,那时大部分设备都提供内置的非易失性内存 (内部存储空间)以及可移动存储媒介 (如Micro SD卡,提供外部存储空间),现在很多设备将永久性存储空间划分为单独的“内部”和“外部”分区,因此,即使没有可移动存储媒介,这两种存储空间也始终存在

1. 内部存储路径
    指的是  data/user/0/xxx(或data/data/xxx)
        //--  /data/user/0/com.xxx.xxx/files
        String str2 = getFilesDir().getAbsolutePath();
        //--  /data/user/0/com.xxx.xxx/cache
        String str3 = getCacheDir().getAbsolutePath();
        //--  /data
        String str1 = Environment.getDataDirectory().getAbsolutePath(); 
    附录    
        //保存至内部存储的文件是应用私有文件,除非有Root访问权限否则其他应用、用户不能访问这些文件,
        //当用户卸载您的应用时,保存在内部存储中的文件也将随之移除    

2. 虚拟外部存储路径(又被称为内部共享存储空间)
    指的是  sdcard(或/storage/emulated/0) ,sdcard实际路径如下:
        lrw-r--r-- 1 root root 21 2008-12-31 11:00 sdcard -> /storage/self/primary
        lrwxrwxrwx 1 root root 19 2020-01-04 03:23 /storage/self/primary -> /mnt/user/0/primary
        lrwxrwxrwx 1 root reserved_disk 19 2020-01-04 03:24 /mnt/user/0/primary -> /storage/emulated/0
    mount 信息如下:
        /dev/block/dm-0 on /data type ext4
        /data/media on /storage/emulated type sdcardfs
        tmpfs on /storage type tmpfs
    附录
        //-- /storage/emulated/0/Android/data/com.xxx.xxx/files/
        //-- /storage/0000-006F/Android/data
        File[] str5 = getExternalFilesDirs("");
        //-- /storage/emulated/0
        String str6 = Environment.getExternalStorageDirectory().getAbsolutePath();
        //-- /storage/emulated/0
        String str7 = Environment.getExternalStoragePublicDirectory("").getAbsolutePath();
        //-- /storage/emulated/0/Android/data/com.xxx.xxx/files 
        //-- 应用特定目录的外部存储中,当用户卸载您的应用时,系统会删除该目录
        String str4 = getExternalFilesDir("").getAbsolutePath();
3. 真实外部存储路径
    指的是 /storage/0000-006F等
    插入外置SD卡后 mount 信息如下:
        /dev/block/dm-0 on /data type ext4
        /data/media on /storage/emulated type sdcardfs
        /mnt/media_rw/0000-006F on /storage/0000-006F type sdcardfs
        tmpfs on /storage type tmpfs
    附录
        //-- /storage/emulated/0/Android/data/com.xxx.xxx/files/
        //-- /storage/0000-006F/Android/data
        File[] str5 = getExternalFilesDirs("");
4. MediaProvider的internal.db与external.db
      MediaProvider internal.db对应的是 /system/media中数据信息
      MediaProvider external.db对应的是 /sdcard中数据信息
【/data/media/0】是Android系统中的一个目录,它等价于【/storage/emulated/0/】。该目录通常用于存储用户的个人数据,例如相册、音乐、视频等。在某些情况下,用户可能会在【/data/media/0/】目录下预置一些特定文件,当进行恢复出厂设置时,系统默认会清除【/data】目录下的所有数据,包括【/data/media/0/】目录。为了保留【/data/media/0/】目录中的特定文件,用户需要采取相应的措施,例如备份这些文件或修改系统设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【安卓学习之常见问题】android路径及文件问题](https://blog.csdn.net/ljb568838953/article/details/119033109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Android如何在恢复出厂设置时不删除掉/data/media/0/里面指定的目录](https://blog.csdn.net/laoguanhua/article/details/80490350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值