外部存儲,內部存儲的區別
Internal storage:
- 總是可用的
- 這里的文件默認只能被我們的app所訪問。
- 當用戶卸載app的時候,系統會把internal內該app相關的文件都清除干凈。
- Internal是我們在想確保不被用戶與其他app所訪問的最佳存儲區域。
String getCacheDir=getCacheDir().getAbsolutePath();
路徑:/data/user/0/com.watermelon.myapplication/cache
String getFilesDir=getFilesDir().getAbsolutePath();
路徑:/data/user/0/com.watermelon.myapplication/files
External storage:
- 并不總是可用的,因為用戶有時會通過USB存儲模式掛載外部存儲器,當取下掛載的這部分后,就無法對其進行訪問了。
- 是大家都可以訪問的,因此保存在這里的文件可能被其他程序訪問
- 當用戶卸載您的應用時,只有在您通過 getExternalFilesDir() 將您的應用- 的文件保存在目錄中時,系統才會從此處刪除您的應用的文件
- External是在不需要嚴格的訪問權限并且希望這些文件能夠被其他app所共享或者是允許用戶通過電腦訪問時的最佳存儲區域。
getExternalCacheDir().getAbsolutePath();
路徑:/storage/emulated/0/Android/data/packagename/cache
可以作為外部緩存的路徑,卸載app時,會自動刪除文件
Environment.getExternalStorageDirectory().getAbsolutePath();
路徑:/storage/emulated/0
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
路徑:/storage/emulated/0/DCIM
getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath();
路徑:/storage/emulated/0/Android/data/packagename/files/Pictures