Android存储文件路径详解
创作时间:
作者:
@小白创作中心
Android存储文件路径详解
引用
CSDN
1.
https://blog.csdn.net/ChinaDragon10/article/details/138772906
在Android开发中,正确理解和使用存储路径对于开发高质量的应用程序至关重要。本文将详细介绍Android系统中的内部存储和外部存储的区别,并通过代码示例展示如何获取不同存储路径。
一、Android存储简介
Android系统分为内部存储和外部存储。从Android 6.0开始,系统不断更新存储(读写)权限管理机制,除了在AndroidManifest.xml
文件中声明权限,应用在运行时也需要动态申请使用对应的权限。
提醒:应用私有存储不需要动态申请权限
Context.getFileDir()
:获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据,如用户个人信息。
- 路径为:
/data/data/应用包名/files/
Context.getCacheDir()
:获取内置存储下的缓存目录,可以用来保存一些缓存文件,如图片。当内置存储的空间不足时,系统会自动清除这些缓存文件。
- 路径为:
/data/data/应用包名/cache/
外部存储路径的开头:storage/emulated/0
内部存储文件路径的开头:/data/user/0/应用的包名(packageName)
在设备上对应的目录为:/data/data/应用的包名(packageName)
系统的公共存储文件夹
二、存储文件路径
下面是具体的代码实现:
package example.demo.kotlin
import android.os.Bundle
import android.os.Environment
import androidx.appcompat.app.AppCompatActivity
import example.demo.kotlin.utils.LogUtil
class TestActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.actvity_test)
// getExternalStorageDirectory在安卓10中已弃用, 可以使用getExternalFilesDir 代替
val externalStorageDirectory = Environment.getExternalStorageDirectory()
val filesDir = this.filesDir
val cacheDir = this.cacheDir
val externalCacheDir = this.externalCacheDir
val externalCacheFilesDirPictures = this.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
LogUtil.i("activity 获取缓存文件路径 filesDir : ${filesDir.absolutePath}")
LogUtil.i("activity 获取缓存文件路径 cacheDir : ${cacheDir.absolutePath}")
externalCacheDir?.let {
LogUtil.i("activity 获取缓存文件路径 externalCacheDir : ${it.absolutePath}")
}
externalCacheFilesDirPictures?.let {
LogUtil.i("activity 获取缓存文件路径 externalCacheFilesDirPictures : ${it.absolutePath}")
}
val mFilesDir2 = this.application.filesDir
val cacheDir2 = this.application.cacheDir
val externalCacheDir2 = this.application.externalCacheDir
val externalCacheFilesDirPictures2 = this.application.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
LogUtil.i("activity.getApplication() 获取缓存文件路径 filesDir2 : ${mFilesDir2.absolutePath}")
LogUtil.i("activity.getApplication() 获取缓存文件路径 cacheDir2: ${cacheDir2.absolutePath}")
externalCacheDir2?.let {
LogUtil.i("activity.getApplication() 获取缓存文件路径 externalCacheDir2 : ${it.absolutePath}")
}
externalCacheFilesDirPictures2?.let {
LogUtil.i("activity.getApplication() 获取缓存文件路径 externalCacheFilesDirPictures2: ${it.absolutePath}")
}
val filesDir3 = this.applicationContext.filesDir
val cacheDir3 = this.applicationContext.cacheDir
val externalCacheDir3 = this.applicationContext.externalCacheDir
val externalCacheFilesDirPictures3 = this.applicationContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 filesDir3 : ${filesDir3.absolutePath}")
LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 cacheDir3 : ${cacheDir3.absolutePath}")
externalCacheDir3?.let {
LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 externalCacheDir3 : ${it.absolutePath}")
}
externalCacheFilesDirPictures3?.let {
LogUtil.i("activity.getApplicationContext() 获取缓存文件路径 externalCacheFilesDirPictures3 : ${it.absolutePath}")
}
}
}
总结
通过上述代码示例,我们可以清晰地看到不同存储路径的获取方式及其对应的路径结构。这对于开发过程中正确管理和使用存储空间非常重要。
热门推荐
从目标设定到团队协作:企业客服管理实战指南
提升职场竞争力:从觉察到实践的硬实力养成指南
企业客户管理指南:18个维度提升客户满意度
丽江泸沽湖7日环线自驾游攻略:详细行程安排与景点介绍
刘亦菲:以音乐与演技征服观众的双栖艺人
ERP系统+大数据分析:纺织业转型升级的新引擎
闭门器怎么安装
江苏13个地级市2024年居民基础养老金标准全解析
深圳博物馆历史民俗馆:六大展览展现深圳古今变迁
深圳五大地标建筑游玩攻略:春笋、平安大厦等
日本沉没?科学真相与全球警示
日本沉没危机:巴西和澳大利亚成避难所?
小孩子排便带血怎么办?原因分析与处理建议
宝宝便秘拉粑粑带血怎么回事
周杰伦再登顶!2024年度热歌榜单揭晓
云南自驾游:昆明出发的3条特色路线及实用指南
浙大阿里联合推出轻量级人脸隐私保护方案,攻击成功率降99%
杭州用户刷脸登录误入东莞公司账户,银行称系网络波动
刷脸支付遇盗刷,上海创新“纯净码”保障用户信息安全
微信刷脸支付现安全漏洞,用户需谨慎开通
刘亦菲新歌《心悸》爆红,歌词道尽爱情中的患得患失
实力歌手云集,《玫瑰的故事》原声带成追剧新宠
Excel数据分类汇总三大方法:功能、透视表、函数详解
AI助力实验室设备管理升级,提升科研效率与安全性
从雍山雍水到京兆府:雍州历史地理变迁考
红果参如何食用
足三里:健脾益气的保健要穴,按摩艾灸效果佳
红果参能当水果吃吗?红果参水果吃了有什么好处
管理后台程序,提升设备性能
任务管理器让你秒变办公达人