假如用户没有内置sdk怎么办,假如我想存在apk的私有目录该怎么办,假如我不想在apk私有目录中存储文件,假如我要存储长期的文件该怎么办,假如我仅仅是想要进行缓存的存储,我该存在哪儿,用什么方法去获得存储文件的路径?
存放在私有目录下文件,一般情况下其他应用是不能访问的,但是当你的程序被卸载的时候这些文件也会被删除掉,而放在sd卡中则恰好相反。作为优秀的程序员,应该尽可能的判断更多的情况,当你要把文件进行存储的时候,强烈建议你判断一下sd卡是否可用。
- public String getDiskCacheDir(Context context) {
- String cachePath = null;
- if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
- || !Environment.isExternalStorageRemovable()) {
- cachePath = context.getExternalCacheDir().getPath();
- ///sdcard/Android/data/<application package>/cache 这个路径
- } else {
- cachePath = context.getCacheDir().getPath();
- ///data/data/<application package>/cache这个路径
- }
- return cachePath;
- }
以下是一些获取相应存储路径的APi,希望各位笑纳:
getCacheDir()方法用于获取/data/data/<application package>/cache目录
getFilesDir()方法用于获取/data/data/<application package>/files目录
Context.getExternalFilesDir()用于获取SDCard/Android/data/你的应用的包名/files/ 目录
Context.getExternalCacheDir()用于获取SDCard/Android/data/你的应用包名/cache/目录
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files