Android本地存储方式(一)-- 内部存储和外部存储

1,014 阅读2分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

本地存储方式

Android 提供了多种可以永久保存数据的形式,可以根据不同是需求来使用不同的保存方式,保存数据的方式有:

  • internal storage(内部存储,数据存储到手机内置存储器)
  • external storage(外部存储,存储到外部SD卡)
  • SharedPreferences(偏好设置)
  • SQLite(本地数据库)

我们先来区分内存、内部存储、外部存储

1. 内存

内存(Memory/RAM),内存和内部存储是两个概念

内存是临时的数据存储器,断点之后就会消失,它的读取速度非常快。我们通常说的手机运行内存就是这个

CPU只能访问其寄存器(Register)和内存(Memory)。存储在硬盘上的数据必须首先传输到内存中才能被CPU访问

当一个程序加载到内存时,它的组成区域有:

  • 堆栈
  • 数据
  • 代码 我们可以看Java虚拟机相关技术文章
2. 内部存储数

直接在设备内部存储文件,默认情况下,保存到内部存储的文件是应用的私有文件,其他应用不能访问这些文件。当卸载应用时,这些文件也会被移除,存储目录是/data/data//files data目录下有两个目录:

  • app 所有已安装的APP的apk存放目录
  • data 各个程序放自己私有数据的地方,在这些数据其他人都是无法访问的,只有该APP的才能够访问。当然如果想将让其他的APP可以访问自己的APP的私有的数据,可以使用 ContentProvider 将想要公开的数据暴露出来
3. 外部存储数

在之前的时候内部存储和外部存储是分开的,但是随着Android手机的发展,现在都将内部存储和外部存储集成到了一个,只是逻辑上分了内部存储和外部存储,data目录就是就是就是手机的内部存储,而mnt或者storage目录下的sdcard目录就是外部存储

4. 如何获取内部存储和外部存储文件路径

可以使用Context来获取

  • context.getFilesDir():获取手机内置存储器的/data/data//files目录,这个位置放存储文件
  • context.getCacheDir():获取手机内置存储器的/data/data//cache目录,这个目录可以存放应用缓存文件
  • context.getExternalFilesDir():获取SDCard/Android/data//files/目录,是外部存储的目录,当我们使用外部存储时,应该先判断外部存储介质是否存在,同时还要在应用权限中加入对sd卡的读写操作

下一篇我们介绍SharedPreferences