Android数据存储方式

557 阅读3分钟

1.SharedPreferences存储方式

1> 轻量级的存储方式,适合一些用户名及密码保存等一些信息

2> 使用Key-Value来存储

3> 存储位置在data/data/应用包名/shared_prefs目录下

SharedPreferences本身不支持读写数据,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。

SharedPerferences是一个接口,无法获得实例,所以只能通过getSharedPerferences来获取实例

SharedPreferences sharedPreferences = getSharedPreferences("Dandelions",MODE_PRIVATE);

SharedPreferences.Editor editor = sharedPreferences.edit();

Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读写。

Context.MODE_APPEND : 检查文件是否存在,存在则会往里面添加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE : 表示当前文件可以被别的应用读取。

Context.MODE_WORLD_WRITEABLE : 表示当前文件可以被别的应用写入。

         void apply() 异步提交数据,没有返回值 

         boolean commit() 同步提交保存数据,返回成功或失败 

         clear() 清空所有数据

         putxxx() 存放数据

         remove() 移除对应Key值的数据

2.文件存储系统

Context提供了两个方法来打开数据文件IO流

FileInputStream openFileInput(String name); FileInputStream(String name,int mode)

这两个方法第一个参数用于指定文件名,第二个参数用于制定打开文件的模式(与上面SharedPerferences的模式一样的),除了这个以外,Context还提供了别的重要的方法

         getDir(String name , int mode):在应用程序的数据文件夹下获取或者创建name对应的子目录

         File getFilesDir():获取该应用程序的数据文件夹得绝对路径

         String[] fileList():返回该应用数据文件夹的全部文件   

基本用法

private void write(String message){
        if(message == null){
            return;
        }
        try {
            FileOutputStream outputStream = openFileOutput("Dandelions.txt",MODE_APPEND);
            outputStream.write(message.getBytes());
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
private String read(){
        try {
            FileInputStream inputStream = this.openFileInput("Dandelions.txt");
            byte[] buffer = new byte[1024];
            StringBuilder sb = new StringBuilder();
            int a = 0;
            while ((a = inputStream.read(buffer)) != -1){
                sb.append(new String(buffer,0,a));
            }

            inputStream.close();
            return sb.toString();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data//files目录,如: /data/data/cn.tony.app/files/message.txt

3.数据库存储数据

在Androi移动设备上一般使用SQLite轻量级数据库,他支持SQL语言,并且占用内存很小而且功能很强大。 在这里给大家介绍一个简单易用的数据库框架Litepal。LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删改查的操作。并且很轻量级,jar包不到100k,几乎零配置。

1. 添加依赖

2. 在assets目录下创建litepal.xml文件,用于创建数据库名称、数据库版本、表名、数据库存放的位置

如图所示,每次只要数据库发生变动, 版本号version都必须加1;要增加表的话就在list标签下添加一行就可以了。

3. 在你的Application中配置

1.如果你的Application中没有BaseApplication这种基类的话,就直接在Application中

2.如果你的Application中定义了BaseApplication的话就在onCreate方法中初始化就好了

               这个时候我们就创建好了表,接下来就可以增删改查操作了。

4.增加数据

5.读取数据

读取id为1的数据

读取数据库里所有数据

按SQL语句搜索

6.修改数据

修改id为1的数据

按Conditions修改数据,修改id=1的数据,修改的内容为test,修改为111111

7.删除数据

删除id为1的数据

删除所有数据

按conditions条件删除

这就是litepal数据库框架的基本用法,想要了解更多请百度搜索Litepal

4.ContentProvider做数据存储