您的位置:首页 > 移动开发 > Android开发

android数据存储

2015-10-30 13:42 501 查看
一、.应用场景:

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向指定文件写入数据会把原有内容清空
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: