Android 文件路径简析
1、概念
内存: 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,所以说它是用于计算机运行时的,它不是用来存储数据的。
内部存储,外部存储: 内部存储我们称为InternalStorage,外部我们称为ExternalStorage,这两个概念来自于早期的Android智能机,4.4以前,内置存储就是内部存储,外置SD卡就是外置存储。我们通过getDataDirectory就可以获取内置存储根路径,通过getExternalStorageDirectory就可以获取外置SD卡根路径。4.4以后外部存储就包含两部分了,其中通过getExternalStorageDirectory获取的是机身存储的外部存储,而外置SD卡我们则需要通过getExternalDirs遍历来获取了。
机身存储;机身存储是指手机自身携带的存储空间,出厂时就已经有了,4.4以前机身存储就是内部存储,4.4及以后机身存储包含了内部存储和外部存储。
Ram,Rom,以及扩展存储(TF卡)的概念。一个手机里面有内存,手机内置存储,以及SD卡, 它们分别是Ram,Rom,以及TF卡,这三种卡的性能,材质及价格都不一样,都有各自的用处。
2、常用路径
1.1 内部存储路径
/data目录下的文件物理上存放在我们通常所说的内部存储里面
内部存储的根路径
Environment.getDataDirectory() = /data
某个应用在内部存储中的files路径
getFilesDir().getAbsolutePath() = /data/user/0/packname/files
某个应用在内部存储中的cache路径
getCacheDir().getAbsolutePath() = /data/user/0/packname/cache
某个应用在内部存储中的自定义路径
getDir(“myFile”, MODE_PRIVATE).getAbsolutePath() = /data/user/0/packname/app_myFile
1.2 外部存储路径
/storage目录下的文件物理上存放在我们通常所说的外部存储里面
获取外部存储的根路径
Environment.getExternalStorageDirectory().getAbsolutePath() = /storage/emulated/0
Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath() = /storage/emulated/0
外部存储中的files路径
getExternalFilesDir(“”).getAbsolutePath() = /storage/emulated/0/Android/data/packname/files
外部存储中的cache路径
getExternalCacheDir().getAbsolutePath() = /storage/emulated/0/Android/data/packname/cache
1.3 其它
/system用于存放系统文件,/cache用于存放一些缓存文件
系统缓存
Environment.getDownloadCacheDirectory() = /cache
系统路径根
Environment.getRootDirectory() = /system
3、用户app路径
这个路径可以是内部存储,也可以是外部存储,就看用户安装的位置,也即是 /data/packname 或者 xxx/data/package
其目录下,常用的又有下面四个
- cache下存放缓存数据
getCacheDir()
getExternalCacheDir()
- databases下存放使用SQLite存储的数据
- files下存放普通数据(log数据,json型数据等)
getFilesDir()
getExternalFilesDir(“”)
- shared_prefs下存放使用SharedPreference存放的数据
用户路径下文件会在用户卸载或者用户清除数据时删除
设置里清除缓存只是清除app运行时的数据