1. Android中的數(shù)據(jù)存儲(chǔ)方式:
1). SharedPreferences存儲(chǔ)
2). 手機(jī)內(nèi)部file存儲(chǔ)
3). 手機(jī)外部file存儲(chǔ) m
4). Sqlite數(shù)據(jù)庫(kù)存儲(chǔ)
5). 遠(yuǎn)程服務(wù)器存儲(chǔ)

2. SharedPrefrence存儲(chǔ)
1). 存儲(chǔ)的位置
/data/data/packageName/share_prefs/xxx.xml
2). 特點(diǎn)
私有的以key--value的形式保存的小數(shù)據(jù)
應(yīng)用卸載時(shí)會(huì)自動(dòng)刪除
3). 相關(guān)API
a. SharedPreferences
context. getSharedPreferences (String name, int mode): 得到SP對(duì)象
name: 文件名(不帶.xml)
mode: 生成的文件模式(是否是私有的,即其它應(yīng)用是否可以訪問(wèn))
Editor sp.edit() : 得到Editor對(duì)象
Xxx sp.getXxx(name,defaultValue): 根據(jù)name得到對(duì)應(yīng)的數(shù)據(jù)
b. Editor
Editor put(name, value) : 保存一個(gè)鍵值對(duì), 沒(méi)有真正保存到文件中
Editor remove(name)
commit(): 提交, 數(shù)據(jù)真正保存到文件中了
3. 手機(jī)內(nèi)部文件存儲(chǔ)
1). 存儲(chǔ)的位置
/data/data/packageName/files/xxx.xxx
2). 特點(diǎn)
私有的文件(圖片, 數(shù)據(jù)庫(kù)文件, 其它)
應(yīng)用卸載時(shí)會(huì)自動(dòng)刪除
3). 相關(guān)API
a. Context
讀取文件
FileInputStream fis = openFileInput("logo.png");
保存文件
FileOutputStream fos = openFileOutput("logo.png", MODE_PRIVATE)
得到files文件夾對(duì)象
File filesDir = getFilesDir();
得到能操作assets下的文件的管理器
AssetManager manager = getAssets();
b.?AssetManager
得到文件輸出流: InputStream open(String fileName)
c.?BitmapFactory
加載圖片得到圖片對(duì)象:?Bitmap BitmapFactory.decodeFile(String pathName)
4. 手機(jī)外部文件存儲(chǔ)
1). 存儲(chǔ)的位置
a.?/storage/sdcard/Android/data/packageName/files/
b. /storage/sdcard/xxx/
2). 特點(diǎn)
a.?私有的文件(圖片, 數(shù)據(jù)庫(kù)文件, 其它),?應(yīng)用卸載時(shí)會(huì)自動(dòng)刪除
b. 其它應(yīng)用可以直接訪問(wèn), 應(yīng)用卸載時(shí)不會(huì)刪除
3). 如何選擇
主要看應(yīng)用卸載后, 文件是否還有存在的必要
4). 相關(guān)API
Environment : ?操作SD卡的工具類
得到SD卡的狀態(tài):Environment.getExternalStorageState()
得到SD卡的路徑:Environment.getExternalStorageDirectory()
SD卡可讀寫的掛載狀態(tài)值:Environment.MEDIA_MOUNTED
context.
getExternalFilesDir(): 得到/mnt/sdcard/Android/data/pageckage_name/files/
操作SD卡的權(quán)限:
android.permission.WRITE_EXTERNAL_STORAGE
5. Sqlite數(shù)據(jù)庫(kù)存儲(chǔ)
1). 存儲(chǔ)的位置
/data/data/packageName/databases/xxx.db
2). 特點(diǎn)
有一定關(guān)系結(jié)構(gòu)的數(shù)據(jù)
應(yīng)用卸載自動(dòng)刪除
3). Sqlite的特點(diǎn):
a. 小: 幾百K
b. 快: 數(shù)據(jù)量不是特別大時(shí)
4). 相關(guān)API:
a.?SQLiteOpenHelper: 數(shù)據(jù)庫(kù)操作的抽象幫助類
abstract void onCreate(SQLiteDatabase db): 用于創(chuàng)建表
abstract void onUpgrade(): 用于版本更新
SqliteDatabase getReadableDatabase() : 得到數(shù)據(jù)庫(kù)連接
b.?SqliteDatabase: 代表與數(shù)據(jù)庫(kù)的連接的類
long insert(): 用于執(zhí)行insert SQL, 返回id值
int update(): 用于執(zhí)行update SQL
int delete(): 用于執(zhí)行delete SQL
Cursor query(): 用于執(zhí)行select SQL, 返回包含查詢結(jié)果數(shù)據(jù)的Cursor
Cursor rawQuery(String sql, String[] selectionArgs)
beginTransaction(): 開(kāi)啟事務(wù)
setTransactionSuccessful(): 設(shè)置事務(wù)是成功的
endTransaction(): 結(jié)束事務(wù), 可能提交事務(wù)或回滾事務(wù)
static openDatabase(String path, CursorFactory factory, int flags): ?得到數(shù)據(jù)庫(kù)連接
c.?Cursor : 包含所有查詢結(jié)果記錄的結(jié)果集對(duì)象(光標(biāo),游標(biāo))
int getCount() : 匹配的總記錄數(shù)
boolean moveToNext() : 將游標(biāo)移動(dòng)到下一條記錄的前面
Xxx getXxx(columnIndex) : 根據(jù)字段下標(biāo)得到對(duì)應(yīng)值
int getColumnIndex(columnname): 根據(jù)字段名得到對(duì)應(yīng)的下標(biāo)