Android存储分类,内部存储、外部存储的区别

前言

  本文大量借鉴一位大佬的博客解析Android内部存储、外部存储的区别
  本文仅作为个人学习记录,如有错误,欢迎指正,非常感谢。
  Android项目开发必定使用到本地存储一些应用相关的数据,以及访问其他应用或者系统自带的公有共享文件(比如手机相册的图片)。所以对于内部存储和外部存储需要格外熟悉。

Android物理存储上目录的划分

  Android系统采用的Linux内核,所以数据存储的目录也和Linux系统相似,一般文件目录如下图所示:
在这里插入图片描述
1.内部存储:
  /data/data/ (黄线)是你应用安装的目录,是你应用的私有文件存储地方,其他应用以及用户是不可访问到的(要是有root当我没说),而应用本身可以轻松访问不需要任何权限。
  这个地方存放的可以是 SharedPreference、Sqlite等数据,如果用户卸载了应用,那么这些数据也会随之消失。
  这个地方存储的数据量不适宜过大,过大的数据应该存放在外部存储中。
  除了SharedPreference等,你也可以自己创建一个文件在这个目录中,方法为:(mode目前只能是 MODE_PRIVATE)

可创建并返回一个内部存储的文件
路径:/data/data/项目包名/
context.getDir(String name, String mode)
路径:/data/data/项目包名/files
context.getFileDir()
路径:/data/data/项目包名/cache
context.getCacheDir()
路径:/data/data/项目包名/
getApplicationInfo().dataDir

  如果你想和其他应用共享这个内部存储中的文件,可以使用FileProvider, 具体方法自行查找。

2.外部存储:
  就是存储在 安装目录之外的地方。
  主要由手机SD卡(这年头谁还用这个),以及部分手机内置存储卡(不可拆卸)构成;存储的数据主要为 手机本地公有共享文件(相册、视频、音频),应用本身私有的外部存储数据。
  应用私有外部存储目录属于应用私有,但这些私有数据是可以被其它应用访问和修改的。但这些数据却不能被系统的MediaStore库扫描到。
  MediaStore库是一个非常好用的系统库,能够轻松访问到系统本地相册,本地音乐的数据。有些流氓软件,某q音乐、某易云,某狗音乐,它们就是把用户下载的音乐放到应用外部存储的私有目录中,不让你保存到本地公有共享目录 ,这样,你只要卸载它的应用,这些数据就会跟着消失。
  应用除了可以对外部存储的私有目录操作,也可以对公有共享目录进行操作(比如用户在你的应用中长按保存图片,那么你可以把它存到公有目录中)
  (1)Android4.4以前需要添加以下权限才能对外部存储进行操作。

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

  (2)Android4.4 - Android 6.0 不需要添加权限就能对外部存储的私有目录进行操作,对外部存储的公有目录还是、必须申请。
  (3)Android6.0以上,一些隐私权限需要动态申请,而且在用户同意授权之后App才能拥有该权限,巧的是对于外部存储的修改就在其中,嘿嘿。动态权限申请具体方式自行查找哈。
  (3)Android10以上,为了整顿Android存储乱象,Google重拳出击,从Android10开始,采用了分区存储机制, 应用只能访问自己的外部存储私有目录以及公共共享文件,而不能访问别的应用的外部存储私有目录。
  获取外部存储的方式:

路径: /storage/emulated/0/Android/data/包名/cache
context.getExternalCacheDir()
路径: /storage/emulated/0/Android/data/包名/files/Pictures图片
context.getExternalCacheDir(PICTURES)
路径: /storage/emulated/0/Android/data/包名/files/Pictures音乐
context.getExternalCacheDir(MUSIC)

3.分区存储机制:
推荐看一下Google官方文档:Android10
这个人写的也很不错:Android10适配

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android内部路径和外部存储路径的区别在于其访问权限和存储位置。 Android内部路径是指应用程序在设备的内部存储空间中创建的路径。这个路径只能被应用程序本身访问,其他应用程序、用户或系统都无法直接访问。内部路径通常用于存储应用程序的私密数据,如缓存文件、数据库文件等。由于内部路径只能被应用程序访问,所以应用程序对其具有读写权限,并且可以在应用程序卸载时将内部路径下的数据一并删除。 而外部存储路径则是指设备上的可移动存储介质,如SD卡。这个路径是被所有应用程序以及使用设备的用户和系统共享的,因此外部存储路径的数据可以被多个应用程序共享和访问。外部存储路径通常用于存储大量的公共数据,如音频、视频、图片等。由于外部存储路径是共享的,所以应用程序对其只具有读写权限,并且应用程序卸载时不会删除外部存储路径下的数据。 需要注意的是,由于外部存储路径是被所有应用程序共享的,所以访问外部存储路径需要申请相关的权限,并且需要注意防止数据被其他应用程序非法访问或篡改。在使用外部存储路径时,还需要进行容量检测,以确保设备上有足够的可用存储空间。 综上所述,Android内部路径和外部存储路径在访问权限、存储位置和数据共享等方面存在区别。根据应用程序的需求和数据的性质,开发者可以选择合适的路径来存储和管理数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值