Android磁盤(pán)存儲(chǔ)可以分為兩類绞惦,內(nèi)部存儲(chǔ)和外部存儲(chǔ)。
內(nèi)部存儲(chǔ):內(nèi)部存儲(chǔ)不是內(nèi)存,是位于系統(tǒng)磁盤(pán)中一個(gè)獨(dú)特的位置蜒灰。/data/文件夾就是內(nèi)部存儲(chǔ),內(nèi)部存儲(chǔ)中一般存儲(chǔ)一些應(yīng)用數(shù)據(jù)肩碟,如apk,sharedpreference,database數(shù)據(jù)强窖,webView緩存和圖片緩存等。內(nèi)部存儲(chǔ)中還有一個(gè)文件夾削祈,每個(gè)應(yīng)用都有一個(gè)翅溺,里面中的數(shù)據(jù)在應(yīng)用卸載之后就會(huì)刪除。結(jié)構(gòu)如:/data/data/你的應(yīng)用報(bào)名/髓抑。其次還有一個(gè)/data/app/的文件夾咙崎,這里面存儲(chǔ)著我們手機(jī)上安裝的apk文件。
特點(diǎn):
內(nèi)部存儲(chǔ)的文件和目錄只能被我們的app自己訪問(wèn)吨拍,別的app不能訪問(wèn)褪猛。
內(nèi)部存儲(chǔ)中的私有目錄,當(dāng)用戶卸載app之后羹饰,該文件目錄中關(guān)于該應(yīng)用的信息就會(huì)被刪除伊滋。
內(nèi)部存儲(chǔ)是可用的。
內(nèi)部存儲(chǔ)大小有限队秩,不適合存儲(chǔ)大量數(shù)據(jù)笑旺。
只有root的手機(jī),才能從手機(jī)文件管理器看見(jiàn)刹碾,否則都是隱藏的燥撞。
eg:
/data/user/0/com.yppcat.test/files
Context.getFilesDir().getAbsolutePath()
/data/user/0/com.yppcat.test/cache
Context.getCacheDir().getAbsolutePath()
/data/user/0/com.yppcat.test
Context.getDataDir().getAbsolutePath()
外部存儲(chǔ):外部存儲(chǔ)并不是指拓展的sd卡座柱,不管有無(wú)外接設(shè)備迷帜,每個(gè)Android手機(jī)都有外部存儲(chǔ)。
一般的mnt或者storage目錄色洞。外部存儲(chǔ)中分兩類目錄戏锹,私有目錄和公有目錄,私有目錄的數(shù)據(jù)會(huì)隨著應(yīng)用的卸載而刪除火诸,公有目錄不會(huì)锦针。
特點(diǎn):
公有目錄任何程序都可以訪問(wèn),私有目錄自身可以訪問(wèn)。
并不一定是可用的奈搜,因?yàn)镾D卡會(huì)被掛載悉盆。
外部存儲(chǔ)中的私有目錄中的數(shù)據(jù)會(huì)隨著應(yīng)用的卸載而刪除,而公有目錄不會(huì)馋吗。
私有目錄:
外部存儲(chǔ)中的私有目錄是不會(huì)主動(dòng)創(chuàng)建的焕盟,需要我們自己創(chuàng)建,私有目錄應(yīng)用本身無(wú)需申請(qǐng)動(dòng)態(tài)權(quán)限宏粤,就能直接訪問(wèn)脚翘。我們可以在私有目錄下創(chuàng)建我們自己的文件夾:
- getExternalFilesDir(“files目錄的子目錄名稱”)
獲取應(yīng)用私有目錄files目錄中的文件目錄(storage/emulated/0/Android/data/包名/files/子目錄)
eg:
/storage/emulated/0/Android/data/com.yppcat.test/cache
Context.getExternalCacheDir().getAbsolutePath()
- getExternalCacheDir()
獲取應(yīng)用cache目錄(/storage/emulated/0/Android/data/包名/cache)
公有目錄:
公有目錄是任何程序都可以
獲取方式:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath()
下面類似
DIRECTORY_MUSIC
音樂(lè)/storage/emulated/0/Music
DIRECTORY_PODCASTS
播客/storage/emulated/0/Podcasts
DIRECTORY_RINGTONES
來(lái)點(diǎn)鈴聲
DIRECTORY_ALARMS
鬧鐘/storage/emulated/0/Alarms
DIRECTORY_NOTIFICATIONS
通知/storage/emulated/0/Notifications
DIRECTORY_PICTURES
圖片/storage/emulated/0/Pictures
DIRECTORY_MOVIES
電影/storage/emulated/0/Movies
DIRECTORY_DOWNLOADS
下載文件存儲(chǔ)路徑/storage/emulated/0/Download
DIRECTORY_DCIM
媒體文件/storage/emulated/0/DCIM
DIRECTORY_DOCUMENTS
文檔/storage/emulated/0/Documents
我們通過(guò)Environment.getExternalStoragePublicDirectory()來(lái)獲取這些目錄