第一行代码 读笔⑥ (存储)

来源:互联网 发布:淘宝达人直播简介范文 编辑:程序博客网 时间:2024/06/07 23:16

数据存储方案,详解持久化技术

持久化技术 文件存储 SharedPreferences存储 SQLite数据库存储

持久化技术: 将内存中的瞬时数据保存到存储设备中,其提供了一种机制让数据再瞬时状态与持久状态之间相互转换。
Android主要提供了三种方式:

  • 文件存储:最基本的数据存储方式,不对存储数据进行任何格式化处理,适于存储简单文本数据或二进制数据。
  • SharedPreference存储:Android平台上一个轻量级的存储类,保存一些常用的配置比如窗口状态,提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。 。
  • 数据库存储:Android上的SQLite是一款轻量级的关系型数据库,支持标准SQL语法,遵循数据库的ACID事物,功能强大方便。

文件存储:
通过Java中的IO操作来进行实现,Android在Context类中封装好J和读取了输入流和输出流的获取方法。
PS:创建的存储文件默认保存在/data/data//files文件夹下。
绝对路径:/data/data//files/filename。
Context:Context.getFilesDir()可以获取到”/data/data//files”

操作:

  • 保存:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。
  • 读取:通过Context.openFileInput获取输入流,参数为文件名。
  • 删除:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。
  • 获取:通过Context.fileList获取files目录下的所有文件名数组。

存储模式:

  • Context.MODE_PRIVATE :为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。
  • Context.MODE_APPEND: 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
    PS:可以用”+”来选择多种模式。
    其他还有MODE_WORLD_READABLE 与MODE_WORLD_WRITEABLE分别代表可被其他应用读取与写入。由于不安全,在4.2被废弃。

SharedPreference存储:它分为多种权限,可以全局共享访问,本质是基于XML文件存储key-value键值对数据。haredPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。

需要先获取SharePreference对象,有3种方式:

  • Context类中的getSharedPreferences(name,mode) :
    方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上;
    方法的第二个参数指定文件的操作模式,共有四种操作模式。
    四种操作模式分别为:

    1. MODE_APPEND: 追加方式存储
    2. MODE_PRIVATE: 私有方式存储,其他应用无法访问
    3. MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取
    4. MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入
  • Activity类中的getPreference(mode):
    类似于Context中的方法,但是只接受一个模式为参数,默认当前Activity类名位文件名

  • PreferencesManager类中的getDefaultSharePreference(context)方法:
    静态方法,接受Context参数,自动使用当前程序的包名为文件名。

存储过程:

  • 先通过edit()方法得到SharedPreference.Editor对象。
  • 通过SharedPreference。Editor添加数据,使用其与数据类型相应的方法,如putBoolean(),putString()……
  • 使用commit()方法将添加的数据提交,完成。
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).editor();editor.putString("name","Tom");editor.getint("age",20);.......editor.commit();

读取过程:
通过对于相应的SharedPreference对象中提供的get()方法获取相应的数据。get()接受两个参数,一为存储时的键值,二为当找不到对应值时的默认返回值。

SharedPreference pref = getSharedPreference("datea",MODE_PRIVATE);String name = pref.getStrign("name","");int age = pref.getint("age",0);........................

清除修改数据:
通过Editor实现:

SharedPreferences sp = getSharedPreferences("name", Context.MODE_PRIVATE);Editor editor = sp.edit();  editor.clear();  editor.commit()

数据库:
正在学习SQL数据库…………

0 0