1. Android中的数据存储方式:
1). SharedPreferences存储
2). 手机内部file存储
3). 手机外部file存储 m
4). Sqlite数据库存储
5). 远程服务器存储
2. SharedPrefrence存储
1). 存储的位置
/data/data/packageName/share_prefs/xxx.xml
2). 特点
私有的以key--value的形式保存的小数据
应用卸载时会自动删除
3). 相关API
a. SharedPreferences
context. getSharedPreferences (String name, int mode): 得到SP对象
name: 文件名(不带.xml)
mode: 生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit() : 得到Editor对象
Xxx sp.getXxx(name,defaultValue): 根据name得到对应的数据
b. Editor
Editor put(name, value) : 保存一个键值对, 没有真正保存到文件中
Editor remove(name)
commit(): 提交, 数据真正保存到文件中了
3. 手机内部文件存储
1). 存储的位置
/data/data/packageName/files/xxx.xxx
2). 特点
私有的文件(图片, 数据库文件, 其它)
应用卸载时会自动删除
3). 相关API
a. Context
读取文件
FileInputStream fis = openFileInput("logo.png");
保存文件
FileOutputStream fos = openFileOutput("logo.png", MODE_PRIVATE)
得到files文件夹对象
File filesDir = getFilesDir();
得到能操作assets下的文件的管理器
AssetManager manager = getAssets();
b. AssetManager
得到文件输出流: InputStream open(String fileName)
c. BitmapFactory
加载图片得到图片对象: Bitmap BitmapFactory.decodeFile(String pathName)
4. 手机外部文件存储
1). 存储的位置
a. /storage/sdcard/Android/data/packageName/files/
b. /storage/sdcard/xxx/
2). 特点
a. 私有的文件(图片, 数据库文件, 其它), 应用卸载时会自动删除
b. 其它应用可以直接访问, 应用卸载时不会删除
3). 如何选择
主要看应用卸载后, 文件是否还有存在的必要
4). 相关API
Environment : 操作SD卡的工具类
得到SD卡的状态:Environment.getExternalStorageState()
得到SD卡的路径:Environment.getExternalStorageDirectory()
SD卡可读写的挂载状态值:Environment.MEDIA_MOUNTED
context.
getExternalFilesDir(): 得到/mnt/sdcard/Android/data/pageckage_name/files/
操作SD卡的权限:
android.permission.WRITE_EXTERNAL_STORAGE
5. Sqlite数据库存储
1). 存储的位置
/data/data/packageName/databases/xxx.db
2). 特点
有一定关系结构的数据
应用卸载自动删除
3). Sqlite的特点:
a. 小: 几百K
b. 快: 数据量不是特别大时
4). 相关API:
a. SQLiteOpenHelper: 数据库操作的抽象帮助类
abstract void onCreate(SQLiteDatabase db): 用于创建表
abstract void onUpgrade(): 用于版本更新
SqliteDatabase getReadableDatabase() : 得到数据库连接
b. SqliteDatabase: 代表与数据库的连接的类
long insert(): 用于执行insert SQL, 返回id值
int update(): 用于执行update SQL
int delete(): 用于执行delete SQL
Cursor query(): 用于执行select SQL, 返回包含查询结果数据的Cursor
Cursor rawQuery(String sql, String[] selectionArgs)
beginTransaction(): 开启事务
setTransactionSuccessful(): 设置事务是成功的
endTransaction(): 结束事务, 可能提交事务或回滚事务
static openDatabase(String path, CursorFactory factory, int flags): 得到数据库连接
c. Cursor : 包含所有查询结果记录的结果集对象(光标,游标)
int getCount() : 匹配的总记录数
boolean moveToNext() : 将游标移动到下一条记录的前面
Xxx getXxx(columnIndex) : 根据字段下标得到对应值
int getColumnIndex(columnname): 根据字段名得到对应的下标