前言
對于任何一個應用來說存儲肯定是必不可少的门岔,對于很多做Android開發(fā)的同學來說可能認為文件存儲很簡單睡互,但是他們未必就搞懂了他的數(shù)據(jù)到底存在了哪里喂急,以及他的數(shù)據(jù)是否存對了地方茵臭,下面我將介紹安卓文件存儲:
一迁杨、認識手機系統(tǒng)文件目錄
先丟一個Nexus 5 手機的File Explorer獲取的系統(tǒng)目錄結構圖
- acct 系統(tǒng)回收站,刪除的系統(tǒng)文件唉匾。
- cache 緩存
- config 配置
- d
- data 用戶的所有程序相關數(shù)據(jù)
- app/ 所有用戶安裝的apk文件
- data/
- local
- dev 設備文件,Linux系統(tǒng)常規(guī)文件夾匠楚,里面的文件很多都是設備模擬的文件系統(tǒng)
- etc 系統(tǒng)主要配置文件
- firmware 固件
- met 掛載點
- oem oem
- proc 運行時文件
- res
- root 超級用戶的配置文件
- sbin 系統(tǒng)工具巍膘,比如 ps/cp/pm 等
- scared sd卡
- storage 手機存儲設備
- sys Linux 內(nèi)核文件
- system Android 系統(tǒng)文件
- app
- bin
- etc
- fonts
- framework
- lib
- ....
- vendor 供應商文件
二、常用目錄介紹
根據(jù)上面的介紹這樣多目錄芋簿,拋開系統(tǒng)文件峡懈,其中/system和/data、storage/是開發(fā)者非常關心的三個目錄与斤。
- /system
- /system/app:存放系統(tǒng)軟件
- /data
- data/app:存放用戶安裝的軟件
- data/data:存放用戶軟件的數(shù)據(jù)
- /storage
- storage/emulated/0:存儲卡
- mnt/sdcard:虛擬路徑肪康,快捷方式,實際也指向存儲卡
- sdcard:虛擬路徑撩穿,快捷方式磷支,實際也指向存儲卡
三、內(nèi)存食寡,內(nèi)部存儲雾狈,外部存儲,概念的區(qū)分
在安卓中把文件存儲分為了內(nèi)部存儲(Internal storage)和外部存儲(External storage),然后我們總把內(nèi)存抵皱、內(nèi)部存儲善榛、外部存儲傻傻分不清楚辩蛋,把外部存儲私有目錄認為是內(nèi)部存儲等等。下面我們就來認識下內(nèi)部存儲和外部存儲和他們的區(qū)別吧移盆!
1.概念介紹
- 內(nèi)存(Memory):也稱為運行內(nèi)存是一種臨時的數(shù)據(jù)存儲器悼院,特點是當斷電后數(shù)據(jù)就會消失,并且讀取和寫入的速度非持溲快据途。
- 內(nèi)部存儲(Internal Storage):機身存儲的私有文件,存儲路徑在/data/data下剑鞍。相當于Linux系統(tǒng)的用戶私有文件昨凡,除了當前用戶其他用戶都沒有訪問權限。
- 外部存儲(External Storage):機身存儲公有文件和外置的存儲(SDCard),所有APP共享蚁署,存儲路徑在/mnt 或者 /storage下便脊。
2.區(qū)分內(nèi)部存儲和外部存儲
先放上我的手機的關于手機信息介紹,系統(tǒng)版本8.0 運行內(nèi)存4GB 手機存儲64GB, 這里所謂的運行內(nèi)存就是內(nèi)存 而手機存儲是內(nèi)部存儲和外部存儲共用大小光戈。我的手機是8.0系統(tǒng)已經(jīng)把內(nèi)部存儲和外部存儲集成在一起哪痰,所以內(nèi)部存儲和外部存儲共用64G。
用一張圖來幫助理解
注: 在原先的時候內(nèi)部存儲和外部存儲是分開的久妆,這種很好理解也很好區(qū)分(這種情況多發(fā)生Android4.4 及以前)卿城,但是隨著Android手機的發(fā)展拣凹,漸漸的都做成了一體機甚至將內(nèi)部存儲和外部存儲都集成在了一起,只是在邏輯上區(qū)分了內(nèi)部存儲和外部存儲。甚至到了現(xiàn)在很多廠商連外置SD卡的卡槽都不提供了家厌,現(xiàn)在手機電池也是不可拆卸。
3.內(nèi)部存儲和外部存儲區(qū)別和特點
內(nèi)部存儲:總是可用的,文件默認只能被你的應用訪問到弧械,應用卸載之后粗仓,內(nèi)部存儲中的這些文件也被刪除。相當與Linux的個人目錄奸绷,只能當前用戶才能看到
存儲路徑:data/data/[package name]/XXX
外部存儲:并不總是可用的,所有應用共享梗夸,文件能被所有應用訪問到,外部存儲又分為公有目錄和私有目錄
- public:公有目錄 文件能被其他應用訪問到号醉,APP卸載后文件還會存在
存儲路徑:/storage/emulated/0/XXX - private: 私有目錄反症,文件能被所有應用訪問到,APP卸載后文件會被刪除
存儲路徑:/storage/emulated/0/Android/data/XXX
1.內(nèi)存存儲路徑
- /data/data/[package name]/app_ 自定義文件
- /data/data/[package name]/cache 緩存
- /data/data/[package name]/code_cache 代碼緩存
- /data/data/[package name]/database 數(shù)據(jù)庫
- /data/data/[package name]/files 文件
- /data/data/[package name]/no_backup 不會自動備份到遠程存儲的應用程序文件
- /data/data/[package name]/shared_prefs SharedPreferences文件
2.外部存存儲路徑
- 外部存儲公共目錄
- /storage/emulated/0/Music
- /storage/emulated/0/Podcasts
- /storage/emulated/0/Ringtones
- /storage/emulated/0/Alarms
- /storage/emulated/0/Notifications
- /storage/emulated/0/Pictures
- /storage/emulated/0/Movies
- /storage/emulated/0/Downloads
- /storage/emulated/0/Dcim
- /storage/emulated/0/Documents
- 外部存儲公共私有目錄
- /storage/emulated/0/Android/data/[package name]/files
- /storage/emulated/0/Android/data/[package name]/cache
- /storage/emulated/0/Android/obb/[package name]
由于本人水平有限畔派,如果有錯誤和需要改進的地方铅碍,還希望大家多多指教,共同進步线椰。