Android中的數(shù)據(jù)存儲(chǔ)

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)

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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