安卓文件路徑非常容易記混吆寨,現(xiàn)記錄如下嗽仪,方便以后查看
1.外部存儲(chǔ)和內(nèi)部存儲(chǔ)的區(qū)別
Internal storage:
總是可用的
這里的文件默認(rèn)只能被我們的app所訪問(wèn)惕虑。
當(dāng)用戶卸載app的時(shí)候忙迁,系統(tǒng)會(huì)把internal內(nèi)該app相關(guān)的文件都清除干凈贤牛。
Internal是我們?cè)谙氪_保不被用戶與其他app所訪問(wèn)的最佳存儲(chǔ)區(qū)域
External storage:
并不總是可用的,因?yàn)橛脩粲袝r(shí)會(huì)通過(guò)USB存儲(chǔ)模式掛載外部存儲(chǔ)器王暗,當(dāng)取下掛載的這部分后悔据,就無(wú)法對(duì)其進(jìn)行訪問(wèn)了。
是大家都可以訪問(wèn)的俗壹,因此保存在這里的文件可能被其他程序訪問(wèn)
當(dāng)用戶卸載您的應(yīng)用時(shí)科汗,只有在您通過(guò) getExternalFilesDir() 將您的應(yīng)用的文件保存在目錄中時(shí),系統(tǒng)才會(huì)從此處刪除您的應(yīng)用的文件
External是在不需要嚴(yán)格的訪問(wèn)權(quán)限并且希望這些文件能夠被其他app所共享或者是允許用戶通過(guò)電腦訪問(wèn)時(shí)的最佳存儲(chǔ)區(qū)域绷雏。
2.常見的獲取文件路徑方法头滔,對(duì)應(yīng)的絕對(duì)路徑
getCacheDir().getAbsolutePath():
/data/data/packagename/cache
這個(gè)目錄和getFilesDir()目錄最大的不同在于:當(dāng)安卓設(shè)備的存儲(chǔ)空間少,或者不夠用的時(shí)候涎显,系統(tǒng)會(huì)自動(dòng)刪除這個(gè)目錄下的文件坤检。
官方建議是,超過(guò)1MB的文件期吓,建議存儲(chǔ)到getExternalCacheDir()目錄下
getFilesDir().getAbsolutePath():
/data/data/packagename/files
以上為內(nèi)存存儲(chǔ)路徑,以下為外部存儲(chǔ)路徑
getExternalCacheDir().getAbsolutePath():
/storage/emulated/0/Android/data/packagename/cache
應(yīng)用外部存儲(chǔ)空間(數(shù)據(jù)文件私有早歇,系統(tǒng)媒體文件無(wú)法訪問(wèn))
可以作為外部緩存的路徑,卸載app時(shí),會(huì)自動(dòng)刪除文件(前提是使用虛擬外部存儲(chǔ))
Environment.getExternalStorageDirectory().getAbsolutePath():
/storage/emulated/0
應(yīng)用外部存儲(chǔ)空間(數(shù)據(jù)文件非私有讨勤,可以被手機(jī)的系統(tǒng)程序訪問(wèn))
官方建議箭跳,不要直接使用該目錄,為了避免污染用戶的根命名空間悬襟,應(yīng)用私有的數(shù)據(jù)衅码,應(yīng)該放在 Context.getExternalFilesDir目錄下
其他的可以被分享的文件,可以放在getExternalStoragePublicDirectory(String).目錄下
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()):
/storage/emulated/0/DCIM
應(yīng)用外部存儲(chǔ)空間(數(shù)據(jù)文件非私有脊岳,可以被手機(jī)的系統(tǒng)程序訪問(wèn))
這個(gè)目錄是用來(lái)存放各種類型的文件的目錄逝段,在這里用戶可以分類管理不同類型的文件(例如音樂(lè)、圖片割捅、電影等)奶躯;
類型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTS
getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath:
/storage/emulated/0/Android/data/packagename/files/Pictures
應(yīng)用外部存儲(chǔ)空間(數(shù)據(jù)文件私有,系統(tǒng)媒體文件無(wú)法訪問(wèn))
卸載app時(shí)亿驾,會(huì)自動(dòng)刪除文件(前提是使用虛擬外部存儲(chǔ))