❶ android存儲及路徑
分為:內部存儲和外部存儲
如何區分內部存儲和外部存儲:可以從物理和邏輯區分
從物理的角度區分,內部存儲就是手機自帶存儲空間,外部存儲就是外部接入的存儲空間例如SD卡
從邏輯意義上區分,data,system 目錄就是手機的內部存儲,而 mnt 或者 storage目錄下的sdcard0指向的sdcard目錄就是外部存儲。如果是手機自帶的外部存儲被稱為機身外部存儲,外置的SD卡則稱之為外部存儲。當然兩者都稱為外部存儲也沒關系。這里描述的內部存儲和機身外部存儲都屬於機身存儲;
邏輯區分是從4.4以上版本開始的;
獲取內部存儲路徑和api對應關系
1,通過Environment
2,通過上下文Context
Build.VERSION_CODES.LOLLIPOP及以上版本新增的API
Build.VERSION_CODES.N及以上版本新增的API
特點:
1、內部存儲路徑中的文件是分類存儲的,我們無法干涉,除了cache目錄,別的目錄系統不會自動創建
2、除了files目錄,別的目錄我們幾乎都是無法手動操作的
3、別的App幾乎無法訪問內部存儲中的數據,除了用非法手段或者我們主動暴露
4、內部存儲目錄下的文件夾及文件會隨著app的卸載而被系統自動刪除
外部存儲又可分為共有目錄和私有目錄;
私有目錄
私有目錄:不需要訪問許可權
Android 在外部存儲空間中也提供了特殊目錄供App存放私有文件,該路徑為:/storage/emulated/0/Android/data/包名/
注意:應用安裝之後/storage/emulated/0/Android/data/是沒有對應的應用文件夾的,需要手動調用對應的API創建;
獲取私有目錄路徑
共有目錄
共有目錄:需要申請許可權才能訪問
許可權:6.0以上需要動態申請
獲取共有目錄的API 29中已過時:
❷ android 幾個路徑的獲取
String appPath = getApplicationContext().getPackageResourcePath();
/data/app/com.younghare.lepusService-2/base.apk
getApplicationContext().getFilesDir()
getApplicationContext().getFilesDir().getParent()
其實就是/data/data/包(這是沙盒其他app無法訪問)
String dataAppPath = getApplicationContext().getFilesDir().getParent();
new File(dataAppPath+"/databases/task.db").exists();//返回是true
抽象路徑名的絕對路徑名字元串
String appAbsolute = getApplicationContext().getFilesDir().getAbsolutePath()
/data/user/0/com.younghare.lepusService/files
獲取CachDir
getApplicationContext().getCacheDir()
通過Context.getExternalCacheDir()方法可以獲取到 SDCard/ android /data/你的應用包名/cache/目錄,一般存放臨時緩存數據
getApplicationContext().getExternalCacheDir()
/storage/emulated/0/Android/data/com.younghare.lepusService/cache
getExternalFilesDir(null)參數傳入的為null,這樣默認訪問的是files文件夾,我們可以指定子文件夾
❸ 安卓11無法訪問data文件限制
因谷歌許可權限制原因,將Android/data目錄進行了隱藏,第三方應用無法訪問,所以通過文件管理不能查看該目錄下的文件。後期我們會推出新的文件管理版本,升級後訪問這個目錄時,會跳轉到谷歌原生文件管理界面查看其中內容,請後續留意文件管理版本升級提醒。
❹ OPPO手機三方應用文件存儲路徑
三方應用在「文件管理」APP文件存儲路徑:
1、打開「文件管理」APP。
(1)圖片、視頻、音頻、文檔、安裝包、壓縮包有單獨的入口,可進入查看有無對應文件。
(2)目前微信、QQ有專門的入口,可點擊進入查看。
(3)若都無顯示,可點擊進入手機存儲查看。
2、注意事項:
Android 11系統進入「「文件管理」APP > 手機存儲 > Android > data」目錄下無顯示,但可通過頁面「點擊查看」進一步查看,需要重新進入Android/data目錄,點擊右上角可更換顯示方式,能夠看到文件完整的名稱。
部分三方應用的文件存儲路徑如下:
序號
應用名稱 存儲路徑
1
微信 照片和視頻:「「文件管理」APP > 手機存儲 > Pictures > Weixin」。
文檔:「「文件管理」APP > 手機存儲 > Android > data > com.tencent.(mm) > (MicroMsg) > (Download)」。
2
QQ 照片、視頻(手動下載時):「「文件管理」APP > 手機存儲 > Tencent > QQ_lmages」和「「文件管理」APP > 手機存儲 > Pictures > QQ」。
文檔、視頻(非手動下載時):「「文件管理」APP > 手機存儲 > Android > data > com.tencent.mobileqq > Tencent > QQfile_recv」。
3
QQ瀏覽器 「「文件管理」APP > 手機存儲 > QQBrowser」。
4
迅雷 「「文件管理」APP > 手機存儲 > Android > data > com.xunlei.downloadprovider > files > ThunderDownload」。
5
騰訊視頻 「「文件管理」APP > 手機存儲 > Android > data > com.tencent.qqlive > files > video_xxx」。(騰訊視頻做過相關處理,無法直接播放。)
6
愛奇藝視頻 「「文件管理」APP > 手機存儲 > Android > data > com.qiyi.video > files > app > download > video > qsv後綴(MB/GB為單位的文件)」。(愛奇藝做過相關處理,無法直接播放。)
7
抖音 已下載視頻保存在相冊:「「文件管理」APP > 手機存儲 > DCIM > Camera」。
8
快手 已下載視頻保存在相冊:「「文件管理」APP > 手機存儲 > DCIM > Camera」。
9
淘寶 保存的圖片:「「文件管理」APP > 手機存儲 > Pictures > taobao」。
10
唱吧 「「文件管理」APP > 手機存儲 > .ktv > song」或「「文件管理」APP > 手機存儲 > .ktv > record」。
11
全民K歌 「「文件管理」APP > 手機存儲 > Android > data > com.tencent.karaoke > files > localsong」。
12
喜馬拉雅 進入「「喜馬拉雅」APP > 右下角我的 > 右上角設置 > 下載和緩存設置 > 下載位置」。
默認:「「文件管理」APP > 手機存儲 > Android > data > com.ximalaya.ting.android > files > download」。
13
懶人聽書 進入「「懶人暢聽」APP > 右下角賬號 > 左上角設置 > 下載設置 > 下載目錄設置」。
默認:「「文件管理」APP > 手機存儲 > tingshu」。
溫馨提示:
① 若您提及應用不在以上范圍,可自行搜索存儲路徑。
② 若您手動點擊保存文件,該文件會存儲在系統目錄下(比如使用微信、QQ時,手動保存圖片或視頻,會存儲在/Pictures目錄下);其他類似緩存或三方應用自發行為,文件會存儲在/Android/data目錄下。
❺ 為什麼將視頻老是喜歡下載到Android/data目錄下,搞得我一卸載應用,視頻就沒了
這是安卓系統結構決定的。
「Android/data」是應用默認的數據文件路徑,類似的還有
「Android/obb」一般使用P2P協議的應用會以這個路徑作為默認路徑
還有的應用是以圖片的方式(實際上是多媒體視頻)保存在「DCIM」文件夾下的
甚至是以應用的【部分包名】作為保存路徑
這是由開發者自行決定的
❻ 安卓data/data/在哪裡
data/data目錄在手機自帶存儲中,是系統目錄。安卓的data/data是所有程序存儲數據的地方
代碼中,可以通過Environment.getDataDirectory().getPath()方式獲取到data目錄。
❼ Android 文件存儲-將數據保存在data目錄下
在平常使用Android手機的時候,我們都知道,幾乎每一個app都在/data/data/<相應的包名>的文件夾下保存數據。那這些數據怎麼進行保存的呢?在這里,將簡單的介紹一下。
Context類中有一個openFileOutPut方法,這個方法可以將我們的數據保存在data目錄下的文件裡面。
openFileOutput(String name, int mode)方法中帶兩個參數,第一個參數是文件名,這里只能寫文件的名字,不能包含路徑,因為所有的數據都保存在/data/data/<應用包名>/files/目錄下;第二個參數是文件的操作模式,有MDOE_PRIVATE,MODE_APPEND,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。
其中MODE_PRIVATE模式的是默認的操作模式,每一次寫入的內容時,都會覆蓋前面的內容;MODE_APPEND模式表示的是每次寫入的內容追加在前面的後面;MODE_WORLD_READABLE表示的是其他應用程序可以對該文件進行寫的操作;MODE_WORLD_WRITEABLE表示的是其他應用程序可以對該文件進行讀的操作。不過在後面的兩種模式過於危險,google已經在Android 4.2中廢棄了。
openFileOutput()方法返回的是一個FileOutPutStream的對象,得到了這個對象,就可以使用Java的IO流來對文件的使用了。
點擊保存過後,就會把我們的數據保存在data目錄下。
如果我們想要查看的話,就可以在Android studio(我是2.3.2的版本)中找到Tools->Android->Android Device Monitor
再打開/data/data/<應用包名>/files/,發現有一個文件,就是我們之前創建的一個文件。
我們可以點擊右上角的圖標進行相應的導出工作,對相應的文件進行導出操作。
在Context類中,與openFileOutput方法對應的是openFileInput方法,用戶從data目錄讀取相應的數據。這個方法相較於openFileOutput方法簡單一些。
效果示意圖:
❽ android下的data目錄在哪個文件夾
在系統根目錄的data文件夾/data下面,資料庫文件等保存在這里