android-数据持久化存储

1.数据持久化存储

   android提供了4种文件存储方式:文件(/data/data/<包名>/files/),SharePreference(/data/data/<包名>/shared prefs/) ,
   SQLite数据库(/data/data/<包名>/database/)和Content Provider

   android采用了“java.io.*”库来提供输入输出(I/O)接口,所有文件以流的形式进行读/写。

2.文件存储

   在context类下有openFileOutput(String name,int mode),openFileInput(String name)

   方法对文件进行写或读。name表示文件的名字,不包括路径,已经默认路径为该应用程序的包下

   data/data/<包名>/files/目录下,当文件不存在时,则创建并放在默认的路径下,有FileNotFoundException异常会抛出。

   mode的取值为context类的常量值,如下:

   MODE_PRIVATE:表示该文件只能被本应用访问

   MODE  APPEND_:  表示新的内容会添加到原文件内容的后面

 MODE_WORLD_READABLE:表示该文件能被所有应用读取

 MODE_WORLD_WRITEABLE:表示该文件能被所有应用写入

   2.1读取资源文件

     android上的应用可以读取资源文件的内容。资源文件必须存储在项目的res/raw/目录下。

      Activity可以通过getResources()方法获取Resources类对象。

     Resources类提供了openRawResource(int id)方法读取res/raw/目录下的文件,id是指该文件在R.java中生成对应的id值。

      将通过InputStream读取流读取的数据放入ByteArrayOutputStream流内。因为该字节数组输出流的数据被写入一个 byte 数组。

            缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。 关闭 ByteArrayOutputStream 无效。

            此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException即可以能够读取任意长度的文件里的内容。

3.SharedPreferences

  Preference是一种轻量级的键值存储方式,可以用它来持久保存一些变量的值,这些变量必须是基本数据类型的,

  它存储的数据保存在一个xml文件里,该xml文件存储在/data/data/<包名>/shared prefs/目录下可以通过,

  SharedPreferences对preference存储的数据操作,它可以通过Context类的getSharedPreferences(String name,int type)

  方法获取唯一一个SharedPreferences对象。同一个应用只有唯一的SharedPreferences对象,其记录文件(xml文件)可以被

  同一应用下的不同Activity共享,type有默认值:MODE_PRIVATE

 注意:getSharedPreferences(String name,int type)后将会在/data/data/<包名>/shared prefs/下以type模式自动创建一个名为“name”的xml文件。

  写操作:

   SharedPreferencesEditor edit();//由SharedPreferences对象的该方法获取Editor,它负责写操作。

  Editor常用方法:

       putString (String name,String value);//

       clear();//清除键值

                remove(String key)

                commit();//该方法最后必须有,它执行数据改变确认的工作。

   读操作:

     SharedPreferences对象的getString(String name,String value);//value为如果没有get到值,则默认返回该值。

 

posted @ 2015-03-15 23:30  beyondbycyx  阅读(215)  评论(0编辑  收藏  举报