android数据存储

一、.应用场景:

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向指定文件写入数据会把原有内容清空



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值