context.getCacheDir() 用于获取/data/data/你的应用的包名/cache
context.getFilesDir() 用于获取/data/data/你的应用的包名/files
2.3
/mnt/sdcard 正确
context.getExternalFilesDirs("abc"); 这个可能会报错的
4.4
context.getExternalFilesDirs("abc");
/storage/emulated/0/Android/data/你的应用的包名/files/abc
/storage/sdcard1/Android/data/你的应用的包名/files/abc
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
如果要保存下载的内容,就不要放在以上目录下
关于Android的数据外部存储,在API Level 8之前,所有的文件都是建议放在Environment.getExternalStorageState()目录下的;
从API Level 8开始,
对于应用程序的私有文件应该放在Context.getExternalFilesDir目录下,
非私有的(shared)的文件应该放在目录下Environment.getExternalStoragePublicDirectory(String)所指定的目录下。
对于缓存文件应该放在Context.getExternalCacheDir()目录下。
另外在准备把数据保存外部存储之前应该先通过Environment.getExternalStorageState()获取其状态,再根据其状态确定其是否可用,
如果不可用,可以考虑将数据保存在内部存储中。
Android开发:filePath放在哪个文件夹
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