一、.应用场景:
1)SharedPreferences:用于量少、格式简单的数据保存,普通的字符串或者基本类型的值,比如各种应用配置信息:是否打开音效,小游戏玩家积分、
2)SQLite:顾名思义
3)File存储:手机存储器上的存储
4)ContentProvider:不同应用之间共享数据,可以把contentprovider当做系统内部网站,网站以固定的uri对外服务。
5)网络存储:顾名思义
二、SharedPreferences与Editor简介
(1) 创建方式
无法直接创建SharedPreferences实例,只能通过Context的getSharedPreferences(String name, int mode)方法获取SharedPreferences对象第二个参数如下几个值:
Context.MODE_PRIVATE:只能本程序使用
Context.MODE_WORLD_READABLE:可被其他程序读
Context.MODE_WORLD_WRITABLE:被其他程序读写
后两种容易导致不安全,建议采用ContentProvider
(2)保存的类型是简单的key-value对
(3)读取
sharedpreferences主要负责读取应用程序的Preferences数据,常用方法:
1.boolean contains(String key):判断是否包含特定key值
2.abstract Map<String ?>getAll():获取全部key-value值
3.boolean getXxx(String key, xxx defValue):指定key的相应value,若key不存在返回defValue Xxx可以是int boolean等各种基本类型数据
(4)写入
sharedPreferences本身没有写入数据能力,通调用edit()方法获取对应的Editor对象,Editor提供方法写入。
SharedPreferences.Edit clear():清空所有数据
SharedPreferences.Editor putXxx(String key, xxx value):存入指定key的数据,可为boolean、float、String等基本数据类型的值
SharedPreferences.Editor remove(String key) 删除指定数据项
boolean commit(): Editor编辑完成后调用该方法提交
(5)sharedpreferences保存位置
DDMS的File Explore面板的/data/data/包名/shared_prefs目录下以XML格式保存
三.SQLite
1构造
(1)继承SQLiteOpenHelper类实现数据库初始化,
(2)新建构造方法,
实现父类方法super(context ,name,cursorFactory(可为null),VERSION)传入上下文、数据库名字、版本等
(3)abstract onCreate(SQLiteDatabase db) 第一次创建数据库时回调该方法,生成数据库表,db.execSQL(CREATE_SQL);
(4)abstract onUpdate(SQLiteDatabase db, oldVersion, newVersion)数据库版本更新时候回调该方法 ,可执行修改表结构等操作
2.常用操作
(1)增,
db.execSQL("INSERT INTO TABLE VALUES (N, ?, ?), new String [] {word , detail}");sql语句中使用占位符,然后第二个参数是实际的参数集
(2)删
db.delete("person", "age>=?", new String[age]);
(3)查
Cursor cursor = db.rawQuery("select * from person", null);
while(cursor.moveToNext()){ int id = cursor.getColumnIndex("id")};
(4)改
update(String table, ContentValues values, String whereClause, String[] whereArgs);
Content values = new ContentValues();
values.put("name", "11");
db.updata("person", values ,"id>?", new Integer[]{20});
(5)操作完成后关闭数据库
四、读写SD卡
读
1.获取SD卡存储目录
File dir = Enviroment.getExternalStorageDirectory();
2获取指定文件输入流
FileInputStream input = new FileInputStream(dir.getCanonicalPath()+FILE_NAME);
3.包装成bufferedReader
BufferedReader buffer = new BufferedReader(new InputStreamReader(input));
StringBuilder sb = new StringBuilder("");
while((line=buffer.readLine()) != -1) sb.append(line);
写
获取目录
File dir = Enviroment.getExternalStorageDirectory();
获取目标文件
File target = new File(dir.getCanonicalPath() + FILE_NAME);
以指定文件创建RandomAccessFile对象
RandomAccessFile raf = new RandomccessFile(target, "rw");
文件指针移动到最后
raf.seek(target.length());
raf.write(content.getBytes());
注意:RandomccessFile向SD中的指定文件追加内容,FileOutputStream向指定文件写入数据会把原有内容清空