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}")
}
}
}
总结
通过上述代码示例,我们可以清晰地看到不同存储路径的获取方式及其对应的路径结构。这对于开发过程中正确管理和使用存储空间非常重要。
热门推荐
赠送面积的计算方式及优缺点分析
奈何桥是什么地方 孟婆的奈何桥是真实存在的吗?
探究奈何桥的奥秘:轮回转世还是地府之路?
挂钩式窗帘怎么安装到窗帘杆上,让家居更温馨
清朝满族亲贵如何习得汉语
北美冬青的名称由来与其冬青属的植物特征和原产地北美密切相关
北美冬青适合在室内养吗?如何让家居更自然
西南交通大学:百年名校的辉煌历程与未来展望
蓝牙耳机音效受手机影响吗?对比分析研究结果是什么?
六爻卦断流年运势分析思路方法
期货强平的价格依据是什么?这一价格依据会产生怎样的市场效应?
当250踏板车的价格和150差不多时,你又该如何选择呢?
从中专生到北大研究生!他一路逆袭…
如何解读命中率统计,一篇文章的深入探讨
深度解析:玉髓与玛瑙的区别、特性及在珠宝中的应用
学习吟诵第一课:什么是吟诵?
阿托伐他汀降脂疗效与安全性真实世界数据整理!
战国足!日本29日公布世预赛名单:防线因伤调整,伊东纯也回归?
“祖母”和“おばあちゃん”有什么区别-如何正确使用这两个词语
三国杀界左慈技能详解
如何利用AI提高内容生产效率
让宝宝轻松睡安稳觉,7个保姆级哄睡技巧,总有一个适合你家娃
中美巡洋舰数量对比:2027年将发生根本性改变
DeepSeek眼中不会被AI替代的职业
玛瑙手串可以包浆吗?如何正确盘玩?
学生卖书套路犯法吗?法律解析与实务探讨
伊尔-76将推出升级商业版,俄罗斯持续推进民用航空制造业发展
三大全球大学排名,分别有何侧重?
勿忘我花语及代表意义(寄托思念与不变的情感)
基于弦截法求解多项式函数根的具体应用场景及代码分析