❶ Android數據存儲之File總結
在使用File存儲App數據時,我們需要了解Android系統的存儲系統。Android的存儲分為內部存儲和外部存儲。
由於Android系統的廠商比較多,對於外部存儲目錄的定義有所不同,可能在根目錄下的mnt,sdcard和storage下。以storage為例,打開emulated/0目錄,外部存儲目錄就出現了。雖然可以通過多種路徑打開外部存儲文件,但是最終他們的路徑是相同的:
mnt:
storage:
sdcard:
外部存儲目錄下包含兩大類:公有目錄和私有目錄
私有目錄:
對比下來External有以下幾點優點:
缺點:
內部存儲與外部存儲許可權申請對比如下:
首先我們要獲取外部存儲目標文件的路徑:
然後確定自己需要創建的文件名,結合上面的到的路徑,創建一個File對象:
Android系統默認數據清理的路徑是,內部存儲目錄中相應的cache文件夾中的文件和外部存儲中相應的cache文件夾中的文件。
你的app的internal storage 目錄是以你的app的包名作為標識存放在Android文件系統的特定目錄下[data/data/com.example.xx]。 從技術上講,如果你設置文件為可讀的,那麼其他app就可以讀取你的internal文件。然而,其他app需要知道你的包名與文件名。若是你沒有設置為可讀或者可寫,其他app是沒有辦法讀寫的。因此只要你使用MODE_PRIVATE ,那麼這些文件就不可能被其他app所訪問。
另外記住一點,內部存儲在你的APP卸載的時候,會一塊被刪除,因此,我們可以在cache目錄裡面放置我們的圖片緩存,而且cache與files的差別在於,如果手機的內部存儲空間不夠了,會自行選擇cache目錄進行刪除,因此,不要把重要的文件放在cache文件裡面,可以放置在files裡面,因為這個文件只有在APP被卸載的時候才會被刪除。還有要注意的一點是,如果應用程序是更新操作,內部存儲不會被刪除,區別於被用戶手動卸載。
不管你是使用 () 來存儲可以共享的文件,還是使用 getExternalFilesDir() 來儲存那些對於你的app來說是私有的文件,有一點很重要,那就是你要使用那些類似DIRECTORY_PICTURES 的API的常量。那些目錄類型參數可以確保那些文件被系統正確的對待。例如,那些以DIRECTORY_RINGTONES 類型保存的文件就會被系統的media scanner認為是ringtone而不是音樂。
在開發中,不建議往內部存儲中寫太多的數據,畢竟空間有限。外部存儲在使用的時候最好能夠將文件存放在私有目錄下,這樣有利於系統維護,也避免用戶的反感。
徹底理解android中的內部存儲與外部存儲
Android存儲挖坑記
緩存文件可以放在哪裡?它們各自的特點是什麼
❷ android app文件目錄結構
原來,只要把文件寫在這里的話,可以不用動態申請許可權,只要在manifest裡面聲明許可權就ok了;
應用程序在運行的過程中如果需要向手機上保存數據,一般是把數據保存在SDcard中的。
大部分應用是直接在SDCard的根目錄下創建一個文件夾,然後把數據保存在該文件夾中。
這樣當該應用被卸載後,這些數據還保留在SDCard中,留下了垃圾數據。
並且在API
6.0之後,根目錄文件存儲是需要用戶授權的,就算你在AndroidManifest.xml中配置了存儲許可權,用戶不授權也是寫不進去了。
SD卡讀寫許可權:
如果你想讓你的應用被卸載後,與該應用相關的數據也清除掉,該怎麼辦呢?
通過
可以得到
這個目錄裡面,一般放一些長時間保存的數據
方法可以獲取到 SDCard/ Android /data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據
通過
方法可以獲取到
如果使用上面的方法,當你的應用在被用戶卸載後,SDCard/Android/data/你的應用的包名/ 這個目錄下的所有文件都會被刪除,不會留下垃圾信息。並且
這個方法獲得的文件存儲路徑適用於6.0以後系統,只要AndroidManifest.xml配置讀寫許可權了,就不需要用戶再授權了。
正常開發中獲取存儲路徑的方法是:
可以看到,當SD卡存在或者SD卡不可被移除的時候,就調用getExternalCacheDir()方法來獲取緩存路徑,否則就調用getCacheDir()方法來獲取緩存路徑。前者獲取到的就是 /sdcard/Android/data/<application package>/cache 這個路徑,而後者獲取到的是 /data/data/<application package>/cache 這個路徑。
設置->應用->應用詳情裡面的」清除數據「與」清除緩存「選項分別對應的是data/data/<application package>/和data/data/<application package>/cache
external storage (外部存儲):
Environment.getExternalStorageDirectory()SD根目錄:/mnt/sdcard/ (6.0後寫入需要用戶授權)
context.getExternalFilesDir(dir)路徑為:/mnt/sdcard/Android/data/< package name >/files/…
context.getExternalCacheDir()路徑為:/mnt/sdcard//Android/data/< package name >/cache/…
internal storage(內部存儲):
context.getFilesDir()路徑是:/data/data/< package name >/files/…
context.getCacheDir()路徑是:/data/data/< package name >/cach/…
❸ android開發怎麼存儲數據
Android平台開發過程中,進行數據存儲的方式有五種,一下是這五種數據存儲的總結:
第一種:使用SharedPreferences存儲數據
適用范圍:保存少量的數據,且這些數據的格式非常簡單:字元串型、基本類型的值。比如應用程序的各種配置信息(如是否打開音效、是否使用震動效果、小游戲的玩家積分等),解鎖口 令密碼等
核心原理:保存基於XML文件存儲的key-value鍵值對數據,通常用來存儲一些簡單的配置信息。通過DDMS的File Explorer面板,展開文件瀏覽樹,很明顯SharedPreferences數據總是存儲在/data/data/<package name>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過SharedPreferences.edit()獲取的內部介面Editor對象實現。SharedPreferences本身是一 個介面,程序無法直接創建SharedPreferences實例,只能通過Context提供的getSharedPreferences(String name, int mode)方法來獲取SharedPreferences實例,該方法中name表示要操作的xml文件名,第二個參數具體如下:
Context.MODE_PRIVATE: 指定該SharedPreferences數據只能被本應用程序讀、寫。
Context.MODE_WORLD_READABLE:指定該SharedPreferences數據能被其他應用程序讀,但不能寫。
Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences數據能被其他應用程序讀,寫
Editor有如下主要重要方法:
SharedPreferences.Editor clear():清空SharedPreferences里所有數據
SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key對應的數據,其中xxx 可以是boolean,float,int等各種基本類型據
SharedPreferences.Editor remove():刪除SharedPreferences中指定key對應的數據項
boolean commit():當Editor編輯完成後,使用該方法提交修改
實際案例:運行界面如下
Android SDK的tools目錄下提供了一個sqlite3.exe工具,這是一個簡單的sqlite資料庫管理工具。開發者可以方便的使用其對sqlite資料庫進行命令行的操作。
程序運行生成的*.db文件一般位於"/data/data/項目名(包括所處包名)/databases/*.db",因此要對資料庫文件進行操作需要先找到資料庫文件:
1、進入shell 命令
adb shell
2、找到資料庫文件
#cd data/data
#ls --列出所有項目
#cd project_name --進入所需項目名
#cd databases
#ls --列出現寸的資料庫文件
3、進入資料庫
#sqlite3 test_db --進入所需資料庫
會出現類似如下字樣:
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
至此,可對資料庫進行sql操作。
4、sqlite常用命令
>.databases --產看當前資料庫
>.tables --查看當前資料庫中的表
>.help --sqlite3幫助
>.schema --各個表的生成語句
以上便是android開發存儲數據的五種方法!
❹ 在喜馬拉雅聽書上下載的音樂保存在手機哪個文件夾
安卓系統中(華為V10為例)
內部存儲位置:/Android/data/com.ximalaya.ting.android/files/download
安卓系統有個專門的文件管理,下面根專據步驟指引屬,找到最終的文件放置位置。
1.首先到手機桌面菜單查找「文件管理」
❺ 安卓手機版騰訊視頻緩存文件在哪裡具體哪個文件夾急,怎麼轉到電腦上
1、在自己的手機上點一下「文件管理」,先打開那個文件夾。
1、Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。
2、Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。第一部Android智能手機發布於2008年10月。
❻ Android本地存儲的幾種方式
Android 提供了5種方式存儲數據: --使用SharedPreferences存儲數據; --文件存儲數據; --SQLite資料庫存儲數據; --使用ContentProvider存儲數據; --網路存儲數據; 先說下,Preference,File, DataBase這三種方式分別對應的目錄是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。 在Android中通常使用File存儲方式是用 Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。 Context.openFileOutput(String fileName, int mode)生成的文件自動存儲在/data/data/Package Name/files目錄下,其全路徑是/data/data/Pac
❼ 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方法簡單一些。
效果示意圖: