android app文件目錄結(jié)構(gòu)

轉(zhuǎn):https://blog.csdn.net/luoguopeng/article/details/72832567

android app目錄: SDCard/Android/data/你的應(yīng)用的包名/

原來(lái),只要把文件寫(xiě)在這里的話(huà),可以不用動(dòng)態(tài)申請(qǐng)權(quán)限,只要在manifest里面聲明權(quán)限就ok了;

應(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ù)。

并且在API
6.0之后,根目錄文件存儲(chǔ)是需要用戶(hù)授權(quán)的,就算你在AndroidManifest.xml中配置了存儲(chǔ)權(quán)限,用戶(hù)不授權(quán)也是寫(xiě)不進(jìn)去了。

SD卡讀寫(xiě)權(quán)限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>'''

如果你想讓你的應(yīng)用被卸載后,與該應(yīng)用相關(guān)的數(shù)據(jù)也清除掉,該怎么辦呢?

通過(guò)

context.getExternalFilesDir()

可以得到

SDCard/Android/data/你的應(yīng)用的包名/files/

這個(gè)目錄里面,一般放一些長(zhǎng)時(shí)間保存的數(shù)據(jù)

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

context.getExternalCacheDir()

方法可以獲取到

 SDCard/Android/data/你的應(yīng)用包名/cache/
這個(gè)目錄里面,一般存放臨時(shí)緩存數(shù)據(jù)

如果使用上面的方法,當(dāng)你的應(yīng)用在被用戶(hù)卸載后,SDCard/Android/data/你的應(yīng)用的包名/ 這個(gè)目錄下的所有文件都會(huì)被刪除,不會(huì)留下垃圾信息。并且

這個(gè)方法獲得的文件存儲(chǔ)路徑適用于6.0以后系統(tǒng),只要AndroidManifest.xml配置讀寫(xiě)權(quán)限了,就不需要用戶(hù)再授權(quán)了。

正常開(kāi)發(fā)中獲取存儲(chǔ)路徑的方法是:

public String getDiskCacheDir(Context context) {    
    String cachePath = null;    
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())    
            || !Environment.isExternalStorageRemovable()) {    
        cachePath = context.getExternalCacheDir().getPath();    
    } else {    
        cachePath = context.getCacheDir().getPath();    
    }    
    return cachePath;    
}    

可以看到,當(dāng)SD卡存在或者SD卡不可被移除的時(shí)候,就調(diào)用getExternalCacheDir()方法來(lái)獲取緩存路徑,否則就調(diào)用getCacheDir()方法來(lái)獲取緩存路徑。前者獲取到的就是 /sdcard/Android/data/<application package>/cache 這個(gè)路徑,而后者獲取到的是 /data/data/<application package>/cache 這個(gè)路徑。

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

external storage (外部存儲(chǔ)):

Environment.getExternalStorageDirectory()SD根目錄:/mnt/sdcard/ (6.0后寫(xiě)入需要用戶(hù)授權(quán))

context.getExternalFilesDir(dir)路徑為:/mnt/sdcard/Android/data/< package name >/files/…

context.getExternalCacheDir()路徑為:/mnt/sdcard//Android/data/< package name >/cache/…

internal storage(內(nèi)部存儲(chǔ)):

context.getFilesDir()路徑是:/data/data/< package name >/files/…

context.getCacheDir()路徑是:/data/data/< package name >/cach/…

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文件存儲(chǔ)和清理: 可以看到,當(dāng)SD卡存在或者SD卡不可被移除的時(shí)候,就調(diào)用getExternalCacheDir(...
    3Q竹林閱讀 2,500評(píng)論 0 2
  • 版權(quán)聲明:本文為作者原創(chuàng),轉(zhuǎn)載必須注明出處。 轉(zhuǎn)載請(qǐng)注明出處:http://www.itdecent.cn/p/7...
    Stan_Z閱讀 1,543評(píng)論 0 7
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • 讀完王瀟的《按自己的意愿過(guò)一生》,寫(xiě)下此篇。 說(shuō)起來(lái),與王瀟,與此書(shū),與“想象要狂野,預(yù)言要自證”,有種微妙的關(guān)系...
    茜茜的自嗨世界閱讀 1,898評(píng)論 0 0
  • 患上一種看到貓就想拍的病 期待著有一天能養(yǎng)貓 然而……我對(duì)貓毛過(guò)敏啊喂【哭】 這是買(mǎi)相機(jī)以后 在學(xué)校拍的第一張照片...
    不帥你報(bào)警哼閱讀 680評(píng)論 0 2

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