Android数据持久化-文件路径详解

Android磁盘存储可以分为两类,内部存储和外部存储。

内部存储:内部存储不是内存,是位于系统磁盘中一个独特的位置。/data/文件夹就是内部存储,内部存储中一般存储一些应用数据,如apk,sharedpreference,database数据,webView缓存和图片缓存等。内部存储中还有一个文件夹,每个应用都有一个,里面中的数据在应用卸载之后就会删除。结构如:/data/data/你的应用报名/。其次还有一个/data/app/的文件夹,这里面存储着我们手机上安装的apk文件。

特点:

内部存储的文件和目录只能被我们的app自己访问,别的app不能访问。

内部存储中的私有目录,当用户卸载app之后,该文件目录中关于该应用的信息就会被删除。

内部存储是可用的。

内部存储大小有限,不适合存储大量数据。

只有root的手机,才能从手机文件管理器看见,否则都是隐藏的。

1588689170(1).png

eg:
/data/user/0/com.yppcat.test/files
Context.getFilesDir().getAbsolutePath()

/data/user/0/com.yppcat.test/cache
Context.getCacheDir().getAbsolutePath()

/data/user/0/com.yppcat.test
Context.getDataDir().getAbsolutePath()

外部存储:外部存储并不是指拓展的sd卡,不管有无外接设备,每个Android手机都有外部存储。

一般的mnt或者storage目录。外部存储中分两类目录,私有目录和公有目录,私有目录的数据会随着应用的卸载而删除,公有目录不会。

特点:

公有目录任何程序都可以访问,私有目录自身可以访问。

并不一定是可用的,因为SD卡会被挂载。

外部存储中的私有目录中的数据会随着应用的卸载而删除,而公有目录不会。

私有目录:

外部存储中的私有目录是不会主动创建的,需要我们自己创建,私有目录应用本身无需申请动态权限,就能直接访问。我们可以在私有目录下创建我们自己的文件夹:

  • getExternalFilesDir(“files目录的子目录名称”)

获取应用私有目录files目录中的文件目录(storage/emulated/0/Android/data/包名/files/子目录)
eg:
/storage/emulated/0/Android/data/com.yppcat.test/cache
Context.getExternalCacheDir().getAbsolutePath()

  • getExternalCacheDir()

获取应用cache目录(/storage/emulated/0/Android/data/包名/cache)

公有目录:

公有目录是任何程序都可以

获取方式:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath()
下面类似

DIRECTORY_MUSIC
音乐/storage/emulated/0/Music

DIRECTORY_PODCASTS
播客/storage/emulated/0/Podcasts

DIRECTORY_RINGTONES
来点铃声

DIRECTORY_ALARMS
闹钟/storage/emulated/0/Alarms

DIRECTORY_NOTIFICATIONS
通知/storage/emulated/0/Notifications

DIRECTORY_PICTURES
图片/storage/emulated/0/Pictures

DIRECTORY_MOVIES
电影/storage/emulated/0/Movies

DIRECTORY_DOWNLOADS
下载文件存储路径/storage/emulated/0/Download

DIRECTORY_DCIM
媒体文件/storage/emulated/0/DCIM

DIRECTORY_DOCUMENTS
文档/storage/emulated/0/Documents

我们通过Environment.getExternalStoragePublicDirectory()来获取这些目录

你可能感兴趣的:(Android数据持久化-文件路径详解)