Android 數據存儲
Android中數據存儲的方式有一下幾種:
一.SharedPreferences :
是一種輕量級的數據存儲方式,主要用於保存應用的一些常用配置,以xml 文件的方式存儲數據,
以鍵值對的方式存取數據。
SharedPreferences 的類型(MODE):
MODE_PRIVATE :私有類型,只允許本應用使用,這個爲默認類型
MODE_APPEND :如果SharedPreferences 文件已經存在,則數據寫入這個文件的末尾
MODE_WORLD_READABLE : 允許其他app讀取數據 ,這個值在API 17 被廢除了(可能爲了保護數據安全)
MODE_WORLD_WRITEABLE : 允許其他app寫入數據 ,這個也是 在 API 17 廢除
獲取SharedPreferences 的兩種方式:
getSharedPreferences(String name,int MODE);獲得的對象可以被同一應用程序下的其他組件共享
getPreferences(); 獲得的SharedPreferences對象只能在該Activity中使用.
保存數據:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
SharedPreferences.Editor editor = sp.edit();
editor.put(String key,String value);
editor.commit(); 提交數據
讀取數據:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
String value = sp.get(String key);
二.基於Java IO 方式的 file:
IO操作數據有兩種不同的類型:私有的file,存放在data/data/目錄下, 另一個是對SDcard操作
1.私有file:
保存數據:MODE 和SharedPreferences 一樣
FileOutputStream fo = Context.openFileOutput(String name,int MODE)
讀取數據:
FileInputStream fi = Context.openFileInput(String name)
2.對SDCard 的數據進行操作:這裏涉及到一個 Environment 類,它是用來管理Android 內部存儲和SDcard的
其中包含了sdcard的一些字段 表示sd卡當前的狀態:
-
-
-
-
-
-
MEDIA_BAD_REMOVAL 在沒有掛載前存儲媒體已被移除
-
MEDIA_CHECKING 正在檢查存儲媒體
-
MEDIA_MOUNTED 存儲媒體已掛載,並且掛載點可讀寫
-
MEDIA_MOUNTED_READ_ONLY 存儲媒體已掛載,但只可讀
-
MEDIA_NOFS 存儲媒體是空白或不支持的文件系統
-
MEDIA_REMOVED 存儲媒體被移除
-
MEDIA_SHARED 存儲媒體正在通過USB共享
-
MEDIA_UNMOUNTABLE 存儲媒體無法掛載
-
MEDIA_UNMOUNTED 存儲媒體沒有掛載
-
-
-
-
-
Environment 中的一些靜態方法:
獲取Android 根目錄 File root = Environment.getRootDirectory();
獲取data目錄 File data = Environment.getDataDirectory();
獲取 Android 下載/緩存內容目錄 File file = Environment.getDownloadCacheDirectory();
獲取SDCard狀態 :Environment.getExternalStorageState();
獲取SDCard根目錄:File root = Environment.getExternalStorageDirectory();
對SDCard進行數據存取的話,首先獲取sdcard 的狀態,判斷sdcard是掛載,如果掛載了sdcard
則獲取Sdcard 的根目錄,然後和自己創建的文件的目錄拼接成一個文件的存放目錄,最後用IO即可
(這裏有個小細節:File類型的量可以和字符串直接用“+”拼接,然後變成字符串)
File root = Environment.getExternalStorageDirectory();//獲取sdcard根目錄
File file = new File(root+File.separator+"MyFile.txt"); separator 爲路徑分隔符
三.SQLite 數據庫:
Android 內置的SQLite是一種輕量級的數據庫,SQL數據庫的功能它基本都有
Android操作SQLite涉及到兩個類 :
SQLiteDataBase :SQLite數據庫類,這個類沒有構造函數,其對象是通過SQLiteOpenHelper 類獲取的
這類具有數據庫的增刪查改等方法,還可以調用execSQL() 方法來執行標準的SQL語句
SQLiteOpenHelper :數據庫輔助類,這個類是用來獲取已有的數據庫 或者 創建新的數據庫以及數據庫
版本號。SQLiteOpenHelper中有兩個抽象方法,用於創建數據庫中的表格,和升級數據庫用 的,這兩個方法需要用戶自己去實現
創建一個類MyDataBase繼承 SQLiteOpenHelper
public MyDataBase(Context context){ 構造函數
super(Context context,String dataBaseName,null,int DataBaseVersion);父類構造函數
}
實現其中的抽象方法:
onCreate(SQLiteDataBase db){
db.execSQL(String s); 在次執行SQL語句創建表格
}
onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){} 當數據庫版本號改變是調用
四.ContentProvider 數據共享:
五.基於 Java Socket/http 的網絡存儲 :