Android getCacheDir和getFilesDir区别
最近在安卓的开发中,对系统提供的几个文件保存的路径探索了一下。
下面是我自己的demo中对不同的方法的路径打印出来的结果!
getCacheDir:/data/data/com.example.sinatext/cache
getFilesDir:/data/data/com.example.sinatext/files
getExternalCacheDir:/storage/sdcard0/Android/data/com.example.sinatext/cache
getExternalFilesDir:/storage/sdcard0/Android/data/com.example.sinatext/files/text
getDatabasePath:/data/data/com.example.sinatext/databases/text
getDir:/data/data/com.example.sinatext/app_modeDir
getPackageResourcePath:/data/app/com.example.sinatext-2.apk
Environment.getDataDirectory():/data
Environment.getExternalStorageState():mounted
Environment.getDownloadCacheDirectory():/cache
Environment.getExternalStorageDirectory():/storage/sdcard0
Environment.getRootDirectory():/system
前面是方法名,后面是对应的路径。
由上面可以看出来,
getCacheDir和getFilesDir是放在/data/data/packagename下的,所以这个目录中的内容必须是root的手机在文件操作系统中才能看到。当然如果在应用程序中清空数据或者卸载应用,那么这两个目录下的文件也将会被清空的。
getExternalCacheDir和getExternalFilesDir是存放在/storage/sdcard0/Android/data/packagename下面的,这个是放在外置存储卡的,这个目录下的内容 可以使用文件浏览系统查看到,但是如果清空数据或者卸载应用,俩个目录下的文件也将被清空。
或者也可以理解为带external这样的是存储在外置sd卡的(ps:external是外部的意思嘛),而直接使用getFilesDir这种是放在/data/data下面的。
但是不管上面的是放在外置存储sd卡的还是放在/data/data下的,如果应用清空数据或者应用卸载掉,都会被清除掉的,所以如果想要保存一些内容到手机,但是应用卸载掉不被删除的话就不能用上面的方法,要自己在Environment.getExternalStorageDirectory()目录下(也可以是其他的目录下)创建自己项目文件夹。把想要保存的内容放在里面。