Android数据持久化存储方式

本文介绍了Android中数据持久化的三种常见方式:1) 文件存储,适用于当前应用私有数据;2) SharedPreferences,用于保存用户设置偏好,支持基本数据类型;3) SQLite数据库,通过SQLiteOpenHelper操作,适合结构化数据存储。并展示了具体的操作示例,包括插入、更新、删除和查询。
摘要由CSDN通过智能技术生成

Android系统中主要提供了三种方式用于简单的实现数据持久化功能:

文件存储(手机自带的内存)SharedPreferences存储以及数据库存储当然还可以用sd卡存储

1,文件存储

特点:手机自带的内存,只能供当前应用程序访问,其他应用程序访问不了,程序卸载这些数据也会随着消失

原理:
基本是先获取一个文件的输出流,然后把信息write进去,最后关闭流
a,通过上下文类 context的openFileOutput()方法获得一个FileOutputStream输出流
b,要写入的内容通过write()写到FileOutputStream对象
c,关闭流
openFileOutput()可以将数据存储到指定的文件中,方法有两个参数,第一个参数是文件名,不需要带上完整的路径,因为这里都是默认存储到data/data/file下面的

第二个参数是文件的操作模式,两种:MODE_PRIVATE和MODE_APPEND.前者是覆盖,后者是追加
(MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,前者是允许只读,后者是只写,但是都被抛弃,因为不安全)
[java]  view plain   copy
  1. private void save(String inputText ) {  
  2.            FileOutputStream fos = null;  
  3.            BufferedWriter writer = null;  
  4.             try {  
  5.                fos = openFileOutput( "data", Context.MODE_PRIVATE);  
  6.                writer = new BufferedWriter( new OutputStreamWriter(fos));  
  7.                 writer.write( inputText);  
  8.            } catch (IOException e) {  
  9.                  // TODO Auto-generated catch block  
  10.                  e.printStackTrace();  
  11.            } finally {  
  12.                  try {  
  13.                       if( writer != null)  
  14.                             writer.close();  
  15.                 }catch (IOException e) {  
  16.                       // TODO Auto-generated catch block  
  17.                       e.printStackTrace();  
  18.                 }  

主要的就是上面的三句话
openFileOutput打开一个输出流,然后构建一个字节缓冲流对象然后写数据,

此外还有几个方法需要特别注意一下 ,这几个方法对于文件关系提供了更好的支持,配合上面介绍的方式, 就可以对文件的数据进行常规的CRUD操作 (增删改查),方法如下:
File getFIlesDir ():获取文件系统的绝对路径。
boolean  deleteFile(String name):删除一个指定文件名为name的文件。
String[] fileList() :当前应用内部存储路径下的所有文件名。

[java]  view plain   copy
  1.  //帮助我们返回一个目录  
  2.   //context.getCacheDir ()的话就是保存到cache缓存文件夹下面       
  3. File file=new File(context.getFilesDir(), "userinfo.txt");             
  4.        FileOutputStream fos= new FileOutputStream( file);            
  5.             //zhangsan 123  
  6.             fos.write(( username+ "##"+ password).getBytes());  
  7.             fos.close();  



2、sharedpreference 存储(一般用于保存用户设置偏好);

特点如下:

@1 以键值对的形式保存到data/data/应用程序包名/shared_prefs目录的XXX.xml文件中

@2目前支持的数据类型有String int float boolean long

@3不支持自定义的Object

@4通常用来存储App上的用户配置信息.如:是否震动,是否打开背景音乐 小游戏积分 用户账号密码信息


要使用该方法来存储数据就要先 获得一个SharedPreferences对象,有三种获取方法
a,Context上下文类中的getSharedPreferences
两个参数,第一个是指定文件的名称,不在就创建。目录也是在data/data/包名/shared_prefs目录下
第二个参数是操作模式。MODE_PRIVATE是默认的,只允许当前的应用程序对其进行操作,MODE_MULTI_PROCESS是一般用于有多个进程中对同一个SharedPreferences文件进行读写的情况,同样有MODE_WORLD_WRITEABLE MODE_WORLD_READABLE两个被废弃的模式
b,Activity类中的getPreferences
只有一个参数,也是操作模式,文件的名称是默认的当前活动的类名
c,PreferenceManager管理类中的getDefaultSharedPreferences()
管理类中的一个静态方法,接收一个context参数,自动把当前的包名作为文件命名的前缀

得到一个对象之后,有三步来进行数据的存储
1,调用对象的edit方法获得一个SharedPreferences.Editor对象
2,向.Editor对象添加数据,putBoolean()或者是putString(),,等等putXXX()方法
3,调用commit方法将添加的数据提交,完成数据的存储操作

例子:
[java]  view plain   copy
  1. @Override  
  2. public void onClick(View v) {  
  3.       // TODO Auto-generated method stub  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值