Android存儲(chǔ)目錄一覽表

注意:本篇文章是本人閱讀相關(guān)文章所寫(xiě)下的總結(jié),方便以后查閱,所有內(nèi)容非原創(chuàng),侵權(quán)刪。

文章內(nèi)容來(lái)自:
android應(yīng)用相關(guān)目錄的存取方式與函數(shù)解析---全

前言

當(dāng)進(jìn)行文件讀取時(shí),常見(jiàn)的問(wèn)題有:
1.文件保存到哪里?
2.相關(guān)函數(shù)是什么?目錄權(quán)限?
3.刪除應(yīng)用后目錄是否會(huì)隨之刪除?

目錄

一般存儲(chǔ)的路徑有三種:

  1. /data/data/package_name/ (會(huì)隨著應(yīng)用的卸載一起刪除掉)【內(nèi)部存儲(chǔ)】
    --1.1 xxx/shared_prefs/ 存儲(chǔ)SharedPreference
    --1.2 xxx/databases/ 存儲(chǔ)數(shù)據(jù)庫(kù)DB (待補(bǔ))
    --1.3 xxx/app_webview 存儲(chǔ)webview相關(guān) (待補(bǔ))
    --1.4 xxx/lib 存儲(chǔ).so靜態(tài)庫(kù)文件 (待補(bǔ))
    --1.5 xxx/cache getCacheDir() 存放臨時(shí)
    --1.6 xxx/files 文件存儲(chǔ) getFilesDir() openFileInput openFileOutput 存放長(zhǎng)久
    --1.7 xxx/custom 創(chuàng)建自己的目錄 getDir()

  2. SD卡Android目錄下的2個(gè)子目錄(會(huì)隨著應(yīng)用的卸載一起刪除掉) 【外部存儲(chǔ)】
    --2.1 /mnt/sdcard/Android/data/package_name/
    ----2.1.1 xxx/files/ getExternalFilesDir() 存放長(zhǎng)久
    ----2.1.2 xxx/cache/ getExternalCacheDir() 存放臨時(shí)
    --2.2 Android/obb/package_name/

  3. SD卡自定義的文件目錄(卸載應(yīng)用之后不會(huì)刪除) 【外部存儲(chǔ)】 SD卡自定義存儲(chǔ)
    --/mnt/sdcard/

附錄:getXXX函數(shù)們的區(qū)別

1./data/data/package_name/

該目錄是只對(duì)應(yīng)用可見(jiàn)的,而且如果手機(jī)沒(méi)有root,用adb也是看不了這個(gè)目錄。
該目錄用來(lái)存儲(chǔ)和應(yīng)用周期相關(guān)的文件,會(huì)隨著應(yīng)用的卸載一起刪除掉。

1.1 xxx/shared_prefs/ 存儲(chǔ)SharedPreference

/data/data/package_name/shared_prefs/

SharedPreference存儲(chǔ)操作看Android存儲(chǔ)技術(shù)初級(jí)篇的2.SharedPreference存儲(chǔ)

1.2 xxx/databases/ 存儲(chǔ)數(shù)據(jù)庫(kù)DB

/data/data/package_name/databases/ 

相關(guān)函數(shù)還有g(shù)etDatabasePath()

1.3 xxx/app_webview 存儲(chǔ)webview相關(guān)

/data/data/package_name/app_webview 
/data/data/package_name/xxxwebviewcachexxx 

用來(lái)存儲(chǔ)應(yīng)用內(nèi)置webview所產(chǎn)生的cache和cookies等,該目錄由于android版本不同名字和位置也可能不同

1.4 xxx/lib 存儲(chǔ).so靜態(tài)庫(kù)文件

/data/data/package_name/lib 

用來(lái)存儲(chǔ)該應(yīng)用的.so靜態(tài)庫(kù)文件

1.5 xxx/cache

/data/data/package_name/cache

該目錄可以使用函數(shù)getCacheDir()獲取

1.6 xxx/files

/data/data/package_name/files 

該目錄可以使用函數(shù)getFilesDir()獲取,
openFileInput()和openFileOutput()函數(shù)也是在該目錄下操作文件,
fileList()函數(shù)是用來(lái)列出該files目錄下的所有文件,
deleteFile(String name)用來(lái)刪除該files目錄下的文件

openFileInput()和openFileOutput()函數(shù)如何進(jìn)行操作看Android存儲(chǔ)技術(shù)初級(jí)篇的1.文件存儲(chǔ)

1.7 xxx/custom 創(chuàng)建自己的目錄

/data/data/package_name/ 這個(gè)目錄下面當(dāng)然也能夠創(chuàng)建子集的目錄,使用的方法就是getDir(String name, int mode),參數(shù)中的name就是需要在該目錄下創(chuàng)建的子目錄名字

2. SD卡Android目錄下的2個(gè)子目錄

該目錄是掛載到SD卡(/mnt/sdcard/ )下面的,所以SD不可用時(shí),這兩個(gè)目錄都是無(wú)效的.
同樣和應(yīng)用周期相關(guān)的文件,會(huì)隨著應(yīng)用的卸載一起刪除掉.
注意需要權(quán)限

2.1 /mnt/sdcard/Android/data/package_name/

2.1.1 xxx/files/
Android/data/package_name/files/

該目錄可用getExternalFilesDir(String type)和getExternalFilesDirs(String type)獲取,參數(shù)type為子目錄名字,null則為根目錄,后者調(diào)用之后會(huì)自動(dòng)生成該目錄

2.1.2 xxx/cache/
Android/data/package_name/cache/

該目錄可用getExternalCacheDir()和getExternalCacheDirs()獲取,后者調(diào)用之后自動(dòng)生成該目錄

2.2 Android/obb/package_name/

obb目錄也可能不存在
該目錄的的相關(guān)函數(shù)簡(jiǎn)單只有兩個(gè):getObbDirs()和getObbDir(),前者調(diào)用之后會(huì)自動(dòng)生成該目錄,該目錄一般是游戲的數(shù)據(jù)包目錄

3. SD卡自定義的文件目錄

除了上邊兩個(gè)目錄之外,當(dāng)然還能在SD卡下自定義目錄,一般用來(lái)永久存儲(chǔ),卸載應(yīng)用之后不會(huì)刪除。

相關(guān)函數(shù)如下:

//這個(gè)函數(shù)用來(lái)獲取SD卡的掛載狀態(tài)
//如果傳入?yún)?shù)path則是獲取該路徑的的掛載狀態(tài)
//如果這個(gè)目錄被用戶的PC掛載,或者從設(shè)備中移除,或者其他問(wèn)題發(fā)生,狀態(tài)的返回是不一樣的
Environment.getExternalStorageState();

//該函數(shù)用來(lái)返回SD卡的根目錄 即/storage/emulated/0/
//注意不要在根目錄下創(chuàng)建文件,一定要?jiǎng)?chuàng)建一個(gè)子目錄去操作,要不然會(huì)污染SD卡的主目錄
//該目錄所有應(yīng)用都可操作,為共享目錄
Environment.getExternalStorageDirectory()

//該函數(shù)用來(lái)返回SD卡下面的下載緩存目錄
Environment.getDownloadCacheDirectory()

//該函數(shù)用來(lái)獲取用戶的數(shù)據(jù)目錄
Environment.getDataDirectory()

//函數(shù)用來(lái)根據(jù)類(lèi)型返回相關(guān)目錄,類(lèi)型為Environment的一些變量
//傳入的類(lèi)型參數(shù)不能是null,返回的目錄路徑有可能不存在,所以必須在使用之前確認(rèn)一下,沒(méi)有就創(chuàng)建該目錄
Environment.getExternalStoragePublicDirectory(String type)

//該函數(shù)用來(lái)返回根System目錄,只掛載為只讀
Environment.getRootDirectory()

SD卡自定義的文件目錄的操作看Android存儲(chǔ)技術(shù)初級(jí)篇的4.SD卡存儲(chǔ)

附錄:getXXX函數(shù)們的區(qū)別

圖片來(lái)自Android文件存儲(chǔ)路徑getFilesDir()與getExternalFilesDir的區(qū)別

Context.getExternalFilesDir()一般放一些長(zhǎng)時(shí)間保存的數(shù)據(jù)
Context.getExternalCacheDir()一般存放臨時(shí)緩存數(shù)據(jù)

設(shè)置->應(yīng)用->應(yīng)用詳情里面的”清除數(shù)據(jù)“與”清除緩存“選項(xiàng)分別對(duì)應(yīng)的是data/data/<application package>/和data/data/<application package>/cache

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容