Android內(nèi)部存儲(chǔ)和外部存儲(chǔ)解析

?Android開(kāi)發(fā)中我們常常聽(tīng)到這樣幾個(gè)概念浓冒,內(nèi)存栽渴,內(nèi)部存儲(chǔ),外部存儲(chǔ)稳懒,很多人常常將這幾個(gè)概念搞混闲擦。
?內(nèi)存(Memory)、內(nèi)部存儲(chǔ)(InternalStorage)僚祷、外部存儲(chǔ)(ExternalStorage)佛致,這在英文中本不會(huì)產(chǎn)生歧義,但是當(dāng)我們翻譯成中文之后辙谜,前兩個(gè)都簡(jiǎn)稱為內(nèi)存俺榆,于是就混了。
?我們可對(duì)Android手機(jī)存儲(chǔ)空間做如下劃分:

  • 內(nèi)存:RAM
  • 內(nèi)部存儲(chǔ):內(nèi)部ROM
  • 外部存儲(chǔ):外部ROM和SDCard

?最容易混淆的是外部存儲(chǔ)装哆,如果說(shuō)pc上也要區(qū)分出外部存儲(chǔ)和內(nèi)部存儲(chǔ)的話罐脊,那么自帶的硬盤(pán)算是內(nèi)部存儲(chǔ),U盤(pán)或者移動(dòng)硬盤(pán)算是外部存儲(chǔ)蜕琴,因此我們很容易帶著這樣的理解去看待android手機(jī)萍桌,認(rèn)為機(jī)身固有的存儲(chǔ)是內(nèi)部存儲(chǔ),而擴(kuò)展的T卡是外部存儲(chǔ)凌简。早期的android設(shè)備內(nèi)部存儲(chǔ)確實(shí)是固定的上炎,而外部存儲(chǔ)確實(shí)是可以像U盤(pán)一樣移動(dòng)的。但是在后來(lái)的設(shè)備中雏搂,很多中高端的機(jī)器都將自己的機(jī)身存儲(chǔ)擴(kuò)展到了8G以上藕施,他們將存儲(chǔ)在概念上分成了"內(nèi)部internal"和"外部external"兩部分,但其實(shí)都在手機(jī)內(nèi)部凸郑。所以不管android手機(jī)是否有可移動(dòng)的sdcard裳食,他們總是有外部存儲(chǔ)和內(nèi)部存儲(chǔ)。最關(guān)鍵的是芙沥,我們都是通過(guò)相同的api來(lái)訪問(wèn)可移動(dòng)的sdcard或者手機(jī)自帶的存儲(chǔ)诲祸。

ddms.png

?使用DDMS打開(kāi)手機(jī)目錄浊吏,這里有3個(gè)文件夾需要注意,data救氯、mnt和storage找田,data是指內(nèi)部存儲(chǔ),mnt和storage指外部存儲(chǔ)径密。下面詳細(xì)介紹下內(nèi)部存儲(chǔ)和外部存儲(chǔ):

1.內(nèi)部存儲(chǔ)

?內(nèi)部存儲(chǔ)位于系統(tǒng)中很特殊的一個(gè)位置午阵,如果你想將文件儲(chǔ)存于內(nèi)部存儲(chǔ)中,那么文件默認(rèn)只能被你的應(yīng)用訪問(wèn)到享扔,且一個(gè)應(yīng)用創(chuàng)建的所有文件都在和應(yīng)用包名相同的目錄下底桂。也就是說(shuō)應(yīng)用創(chuàng)建于內(nèi)部存儲(chǔ)的文件,與這個(gè)應(yīng)用是關(guān)聯(lián)起來(lái)的惧眠。當(dāng)一個(gè)應(yīng)用卸載之后籽懦,內(nèi)部存儲(chǔ)中的這些文件也被刪除。從技術(shù)上來(lái)講如果你在創(chuàng)建內(nèi)部存儲(chǔ)文件的時(shí)候?qū)⑽募傩栽O(shè)置成可讀氛魁,其他app能夠訪問(wèn)自己應(yīng)用的數(shù)據(jù)暮顺,前提是他知道你這個(gè)應(yīng)用的包名,如果一個(gè)文件的屬性是私有(private)秀存,那么即使知道包名其他應(yīng)用也無(wú)法訪問(wèn)捶码。 內(nèi)部存儲(chǔ)空間十分有限,因而顯得可貴或链,另外惫恼,它也是系統(tǒng)本身和系統(tǒng)應(yīng)用程序主要的數(shù)據(jù)存儲(chǔ)所在地,一旦內(nèi)部存儲(chǔ)空間耗盡澳盐,手機(jī)也就無(wú)法使用了祈纯。來(lái)看一下內(nèi)部存儲(chǔ)中的兩個(gè)重要目錄:
(1)app文件夾,沒(méi)有root的手機(jī)不能打開(kāi)該文件夾叼耙。app文件夾里存放著我們所有安裝的app的apk文件夾腕窥,當(dāng)我們調(diào)試一個(gè)app的時(shí)候,可以看到控制臺(tái)輸出的內(nèi)容筛婉,有一項(xiàng)是uploading...,就是上傳我們的apk到這個(gè)文件夾簇爆。
(2)data文件夾,這個(gè)文件夾里邊都是一些包名爽撒,打開(kāi)這些包名后我們會(huì)看到這樣一些文件:

  • data/data/包名/shared_prefs
  • data/data/包名/database
  • data/data/包名/files
  • data/data/包名/cache

?我們?cè)谑褂肧harePerference的時(shí)候冕碟,將數(shù)據(jù)持久化存儲(chǔ)于本地,其實(shí)就是存在這個(gè)文件夾中的xml文件里匆浙,我們的app里邊的數(shù)據(jù)庫(kù)文件就存儲(chǔ)于databases文件夾中,還有我們的普通數(shù)據(jù)存儲(chǔ)在files中厕妖,緩存在cache文件夾中首尼。

2.外部存儲(chǔ)

?外部存儲(chǔ)就是我們上面看到的storage文件夾,也有可能是mnt文件夾,在storage文件夾中有一個(gè)sdcard文件夾软能,這個(gè)文件夾中的文件又分為兩類迎捺,一類是公有目錄,還有一類是私有目錄查排,其中公有目錄有9大類凳枝,比如DCIM,Download等這些系統(tǒng)為我們創(chuàng)建的文件夾,私有目錄就是android這個(gè)文件夾跋核,這個(gè)文件夾打開(kāi)后里邊有一個(gè)data文件夾岖瑰,打開(kāi)這個(gè)文件夾,里面包含了許多包名組成的文件夾砂代。

?Android應(yīng)用程序在運(yùn)行的過(guò)程中如果需要向手機(jī)上保存數(shù)據(jù)蹋订,一般是把數(shù)據(jù)保存在SDcard中的,大部分應(yīng)用是直接在SDcard的根目錄創(chuàng)建一個(gè)文件夾刻伊,然后把數(shù)據(jù)直接保存在該文件夾下露戒,這樣當(dāng)該應(yīng)用被卸載后,這些數(shù)據(jù)還保留在SDcard中捶箱,留下了垃圾數(shù)據(jù)智什。

?開(kāi)發(fā)中我們一般都是操作存儲(chǔ)空間,Google官方建議我們App的數(shù)據(jù)應(yīng)該存儲(chǔ)在外部存儲(chǔ)的私有目錄中該App的包名下丁屎,這樣當(dāng)用戶卸載掉App之后荠锭,相關(guān)的數(shù)據(jù)會(huì)一并刪除,如果你直接在/storage/sdcard目錄下創(chuàng)建了一個(gè)應(yīng)用的文件夾悦屏,那么當(dāng)你刪除應(yīng)用的時(shí)候节沦,這個(gè)文件夾就不會(huì)被刪除。

目錄操作

最后介紹常用的獲取特定存儲(chǔ)目錄的方法:
(1)context.getFilesDir() 內(nèi)部存儲(chǔ)data/data/包名/files目錄
(2)context.getCacheDir() 內(nèi)部存儲(chǔ)data/data/包名/cache目錄
(3)Environment.getExternalStorageDirectory() 外部存儲(chǔ)根目錄
(3)Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM) 外部存儲(chǔ)公有目錄
(4)context.getExternalFilesDir() 外部存儲(chǔ)私有目錄storage/sdcard/Android/data/包名/files
(5)context.getExternalCacheDir() 外部存儲(chǔ)私有目錄storage/sdcard/Android/data/包名/cache

?通過(guò)Context.getExternalFilesDir()方法可以獲取到SDCard/Android/data/你的應(yīng)用的包名/files/目錄础爬,一般放一些長(zhǎng)時(shí)間保存的數(shù)據(jù)甫贯。

?通過(guò)Context.getExternalCacheDir()方法可以獲取到SDCard/Android/data/你的應(yīng)用包名/cache/目錄,一般存放臨時(shí)緩存數(shù)據(jù)看蚜。

?使用上面的方法叫搁,當(dāng)應(yīng)用被卸載后,SDCard/Android/data/你的應(yīng)用包名/這個(gè)目錄下的所有文件都會(huì)被刪除供炎,不會(huì)留下垃圾信息渴逻。上面兩個(gè)目錄分別對(duì)應(yīng) 設(shè)置->應(yīng)用->應(yīng)用詳情里面的“清除數(shù)據(jù)”與“清除緩存”選項(xiàng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末音诫,一起剝皮案震驚了整個(gè)濱河市惨奕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竭钝,老刑警劉巖梨撞,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹洗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卧波,警方通過(guò)查閱死者的電腦和手機(jī)时肿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)港粱,“玉大人螃成,你說(shuō)我怎么就攤上這事〔槠海” “怎么了寸宏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咪惠。 經(jīng)常有香客問(wèn)我击吱,道長(zhǎng),這世上最難降的妖魔是什么遥昧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任覆醇,我火速辦了婚禮,結(jié)果婚禮上炭臭,老公的妹妹穿的比我還像新娘永脓。我一直安慰自己,他們只是感情好鞋仍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布常摧。 她就那樣靜靜地躺著,像睡著了一般威创。 火紅的嫁衣襯著肌膚如雪落午。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天肚豺,我揣著相機(jī)與錄音溃斋,去河邊找鬼。 笑死吸申,一個(gè)胖子當(dāng)著我的面吹牛梗劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播截碴,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼梳侨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了日丹?” 一聲冷哼從身側(cè)響起走哺,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哲虾,沒(méi)想到半個(gè)月后丙躏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體齐帚,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年彼哼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湘今。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敢朱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摩瞎,到底是詐尸還是另有隱情拴签,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布旗们,位于F島的核電站蚓哩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏上渴。R本人自食惡果不足惜岸梨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稠氮。 院中可真熱鬧曹阔,春花似錦、人聲如沸隔披。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奢米。三九已至抓韩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鬓长,已是汗流浹背谒拴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痢士,地道東北人彪薛。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像怠蹂,于是被迫代替她去往敵國(guó)和親善延。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容