Android文件路徑整理:context獲取路徑和Environment類

context獲取路徑

image.png

context.getFilesDir()

獲取路徑:/data/user/0/應(yīng)用包名/files

包含應(yīng)用程序文件的目錄的路徑。不需要額外的權(quán)限來(lái)讀取或在返回的路徑下寫(xiě)入文件屉更。

context.getCacheDir()

獲取路徑:/data/user/0/應(yīng)用包名/cache

應(yīng)用程序緩存文件的目錄的路徑瘤缩。強(qiáng)烈鼓勵(lì)應(yīng)用程序?qū)⒕彺婵臻g的使用保持在滿額。當(dāng)該文件夾超額時(shí),系統(tǒng)將自動(dòng)刪除該目錄中的文件為其他地方提供需要空間讥电,當(dāng)不滿額時(shí)則不會(huì)放吩。不需要額外的權(quán)限來(lái)讀取或在返回的路徑下寫(xiě)入文件御毅。

context.getExternalCacheDir()

獲取路徑:/storage/emulated/0/Android/data/應(yīng)用包名/cache

應(yīng)用程序特定目錄的絕對(duì)路徑根欧,與 mContext.getCacheDir() 相似,區(qū)別在于平臺(tái)并不總是監(jiān)視共享存儲(chǔ)中可用的空間端蛆,因此可能不會(huì)自動(dòng)刪除這些文件凤粗。這些文件是應(yīng)用程序內(nèi)部的,通常不作為媒體文件對(duì)用戶展示今豆。

context.getExternalFilesDir(String type)

獲取路徑:/storage/emulated/0/Android/data/應(yīng)用包名/files/type指定目錄(詳見(jiàn)下面Environment分析)

應(yīng)用程序特定目錄的絕對(duì)路徑嫌拣,與 mContext.getFilesDir() 相似。這些文件是應(yīng)用程序內(nèi)部的呆躲,通常不作為媒體文件對(duì)用戶展示异逐。

context.getObbDir()

獲取路徑:/storage/emulated/0/Android/obb/應(yīng)用包名

返回到應(yīng)用程序特定目錄的絕對(duì)路徑〔宓啵可能返回NULL灰瞻。不需要額外權(quán)限。

context.getNoBackupFilesDir()

獲取路徑:/data/user/0/應(yīng)用包名/no_backup

不會(huì)自動(dòng)備份到遠(yuǎn)程存儲(chǔ)的應(yīng)用程序文件的路徑辅甥。需要判斷Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP(21)酝润。

context.getCodeCacheDir()

獲取路徑:/data/user/0/應(yīng)用包名/code_cache

保存應(yīng)用程序代碼緩存文件的目錄路徑。適合在運(yùn)行時(shí)存放應(yīng)用產(chǎn)生的編譯或者優(yōu)化的代碼璃弄。不需要額外權(quán)限袍祖。需要判斷Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP(21)

context.getDataDir()

獲取路徑:/data/user/0/應(yīng)用包名

返回文件系統(tǒng)目錄的絕對(duì)路徑谢揪,所有屬于該應(yīng)用程序的私有文件都存儲(chǔ)在文件系統(tǒng)中。應(yīng)用程序不應(yīng)該直接使用這個(gè)路徑捐凭,
而是應(yīng)該在這個(gè)類上使用{getFilesDir()}拨扶、{getCacheDir()}、{getDir(String, int)}或其他存儲(chǔ)API茁肠。
需要判斷Build.VERSION.SDK_INT >= Build.VERSION_CODES.N(24)患民。

context.getPackageCodePath()

獲取路徑:/data/app/應(yīng)用包名-xxxxx/base.apk

此上下文的主Android包的完整路徑。這對(duì)應(yīng)用程序通常沒(méi)有用處垦梆,因?yàn)樗鼈儾粦?yīng)該直接訪問(wèn)文件系統(tǒng)匹颤。

context.getPackageResourcePath()

獲取路徑:/data/app/應(yīng)用包名-xxxxx/base.apk

基本跟mContext.getPackageCodePath()相同。

Environment

存儲(chǔ)狀態(tài)

存儲(chǔ)狀態(tài) 描述
MEDIA_UNKNOWN Unknown storage state, such as when a path isn't backed by known storage media.
MEDIA_REMOVED Storage state if the media is not present.存儲(chǔ)媒體被移除
MEDIA_UNMOUNTED Storage state if the media is present but not mounted. 存儲(chǔ)媒體沒(méi)有掛載
MEDIA_CHECKING Storage state if the media is present and being disk-checked.
MEDIA_NOFS Storage state if the media is present but is blank or is using an unsupported filesystem.空白或是不支持的文件系統(tǒng)
MEDIA_MOUNTED Storage state if the media is present and mounted at its mount point with read/write access.存儲(chǔ)媒體已經(jīng)掛載托猩,并且可讀/寫(xiě)
MEDIA_MOUNTED_READ_ONLY Storage state if the media is present and mounted at its mount point with read-only access.存儲(chǔ)媒體已經(jīng)掛載印蓖,只讀。
MEDIA_SHARED Storage state if the media is present not mounted, and shared via USB mass storage.存儲(chǔ)媒體正在通過(guò)USB共享
MEDIA_BAD_REMOVAL Storage state if the media was removed before it was unmounted.在沒(méi)有掛載前存儲(chǔ)媒體已經(jīng)被移除
MEDIA_UNMOUNTABLE Storage state if the media is present but cannot be mounted. Typically this happens if the file system on the media is corrupted.存儲(chǔ)媒體無(wú)法掛載
MEDIA_EJECTING Storage state if the media is in the process of being ejected.存儲(chǔ)媒體處于被彈出的過(guò)程

標(biāo)準(zhǔn)存儲(chǔ)目錄

標(biāo)準(zhǔn)存儲(chǔ)目錄 目錄
DIRECTORY_MUSIC Music 目錄中的任何音頻文件應(yīng)該放在常規(guī)的音樂(lè)列表中供用戶使用京腥。
DIRECTORY_PODCASTS Podcasts 可放置任何音頻文件赦肃,應(yīng)該在用戶可以選擇的播客列表中(而不是常規(guī)音樂(lè))。
DIRECTORY_RINGTONES Ringtones 可放置任何音頻文件,應(yīng)該在用戶可以選擇的鈴聲列表中(而不是常規(guī)音樂(lè))他宛。
DIRECTORY_ALARMS Alarms 可放置任何音頻文件船侧,應(yīng)該在用戶可以選擇的鬧鈴列表中(而不是常規(guī)音樂(lè))。
DIRECTORY_NOTIFICATIONS Notifications 可放置任何音頻文件厅各,應(yīng)該在用戶可以選擇的通知提醒列表中(而不是常規(guī)音樂(lè))镜撩。
DIRECTORY_PICTURES Pictures 其中放置可供用戶使用的圖片文件。
DIRECTORY_MOVIES Movies 其中放置可供用戶使用的視頻文件队塘。
DIRECTORY_DOWNLOADS Download 其中放置用戶的下載文件
DIRECTORY_DCIM DCIM 傳統(tǒng)的安裝圖片和視頻的位置袁梗。
DIRECTORY_DOCUMENTS Documents 其中放置由用戶創(chuàng)建的文檔。

context.getExternalFilesDir(String type) 會(huì)返回/storage/emulated/0/Android/data/應(yīng)用包名/files/type指定目錄

image.png

Environment.getExternalStoragePublicDirectory(String type) 會(huì)返回/storage/emulated/0/type指定目錄

image.png

獲取路徑

  • Environment.getExternalStorageState() 獲取存儲(chǔ)狀態(tài)
  • Environment.getDataDirectory() : /data
  • Environment.getDownloadCacheDirectory() : /cache
  • Environment.getRootDirectory(): /system
  • Environment.getExternalStorageDirectory():
    返回路徑:/storage/emulated/0
    返回共享/外部存儲(chǔ)主目錄人灼。如果用戶已經(jīng)掛載在他們的計(jì)算機(jī)上或者已經(jīng)從設(shè)備上刪除或者其他一些問(wèn)題已經(jīng)發(fā)生围段,這個(gè)目錄現(xiàn)在可能是不可訪問(wèn)的⊥斗牛可以用Environment.getExternalStorageState() 確定其當(dāng)前狀態(tài)奈泪。
    傳統(tǒng)上,這是一個(gè)SD卡灸芳,但它也可以被實(shí)現(xiàn)為與被保護(hù)的內(nèi)部存儲(chǔ)區(qū)不同的設(shè)備中的內(nèi)置存儲(chǔ)器涝桅,并且可以作為計(jì)算機(jī)上的文件系統(tǒng)安裝。
    應(yīng)用程序不應(yīng)直接使用此頂級(jí)目錄烙样,以避免污染用戶的根命名空間冯遂。可以通過(guò)Context.getExternalFilesDirs(String)谒获、Context.getExternalCacheDirs() 等方法訪問(wèn)二級(jí)存儲(chǔ)蛤肌。任何應(yīng)用程序私有的文件都應(yīng)該放在Context.getExternalFilesDir 返回的目錄中,應(yīng)用程序被卸載時(shí)系統(tǒng)將負(fù)責(zé)刪除批狱。

我的地址:https://wangshouz.github.io/2018/06/14/android-files/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裸准,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赔硫,更是在濱河造成了極大的恐慌炒俱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爪膊,死亡現(xiàn)場(chǎng)離奇詭異权悟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)推盛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)峦阁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人小槐,你說(shuō)我怎么就攤上這事拇派『稍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵件豌,是天一觀的道長(zhǎng)疮方。 經(jīng)常有香客問(wèn)我,道長(zhǎng)茧彤,這世上最難降的妖魔是什么骡显? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮曾掂,結(jié)果婚禮上惫谤,老公的妹妹穿的比我還像新娘。我一直安慰自己珠洗,他們只是感情好溜歪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著许蓖,像睡著了一般蝴猪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膊爪,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天自阱,我揣著相機(jī)與錄音,去河邊找鬼米酬。 笑死沛豌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赃额。 我是一名探鬼主播加派,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跳芳!你這毒婦竟也來(lái)了哼丈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筛严,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后饶米,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桨啃,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年檬输,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了照瘾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丧慈,死狀恐怖析命,靈堂內(nèi)的尸體忽然破棺而出主卫,到底是詐尸還是另有隱情,我是刑警寧澤鹃愤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布簇搅,位于F島的核電站,受9級(jí)特大地震影響软吐,放射性物質(zhì)發(fā)生泄漏瘩将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一凹耙、第九天 我趴在偏房一處隱蔽的房頂上張望姿现。 院中可真熱鬧,春花似錦肖抱、人聲如沸备典。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)提佣。三九已至,卻和暖如春欲险,著一層夾襖步出監(jiān)牢的瞬間镐依,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工天试, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留槐壳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓喜每,卻偏偏與公主長(zhǎng)得像务唐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子带兜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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