Android数据存储

Android数据存储

概述

Android开发中,经常会接触到数据存储, 故本文详细讲述下关于数据存储的知识,希望能够加深理解,时常回顾,由于本人才疏学浅,或有不当之处,望批评指教

数据存储方式

  • 文本存储
  • SharedPreferences
  • SQLite数据库
  • ContentProvider
文本存储

文本存储比较简单,不会对数据做格式化处理,适合存储一些简单的文本数据,默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。
Context类提供了两种方法打开数据文件的IO流

文本写入
FileOutputStream openFileOutput (String name,  int mode)

该方法将数据输出到文件里,方法接受两个参数,第一个参数是文件名,注意文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/<packagename>/files目录下的,基于该文件名创建文件;第二个参数是操作模式,
有两种模式可选
* MODE_PRIVATE: 默认的操作模式,表示私有数据,只能被本应用访问,并且写入内容会覆盖源文件内容
* MODE_APPEND: 表示若文件已存在,则往文件中追加内容,否则创建新文件。

    private void write(){
        String data = "举头望明月,低头思故乡";
        BufferedWriter bufferedWriter = null;
        try {
            FileOutputStream fileOutputStream = openFileOutput("data", MODE_PRIVATE);
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
            bufferedWriter.write(data);
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                if(bufferedWriter != null){
                    bufferedWriter.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
文本读取
FileInputStream openFileInput (String name)

该方法从文件中读取数据,直接受一个参数,即要读取的文件名,然后系统会自动到/data/data/<packagename>/files/目录下加载该文件,并返回一个FileInputStream对象

    private String read(){
        BufferedReader bufferedReader = null;
        StringBuilder data = new StringBuilder();
        try{
            FileInputStream fileInputStream = openFileInput("data");
            bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
            String line = "";
            while ((line = bufferedReader.readLine()) != null){
                data.append(line);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                if(bufferedReader != null){
                    bufferedReader.close();
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        return data.toString();
    }
SharedPreferences

SharedPreferences 是基于XML文件存储的键值对保存数据的,并且支持多种不同的数据类型。文件存放在/data/data/<packagename>/shared_prefs/目录下。当然,要使用SharedPreferences存储数据,首先要忽的SharedPreferences对象,可通过以下两个方法之一:

  • getSharedPreferences() - 接受两个参数,第一个是文件名称,第二个指定操作模式
  • getPreferences() - 只接受操作模式参数,因只在Activity类中获取,故类名为文件名。
写入操作
  • 调用SharedPreferences对象的edit()方法获取SharedPreferences.Editor对象
  • SharedPreferences.Editor对象中添加数据,使用 putBoolean() 和 putString() 等方法
  • 调用commit()apply()方法提交
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_APPEND).edit();
editor.putBoolean("flag", true);
editor.putInt("age", 22);
editor.putString("name", "hao");
editor.commit();
读取操作
  • 获取SharedPreferences对象
  • 使用getXXX()方法读取数据
SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_APPEND);

SQLite数据库和ContentProvider内容较多,故放在单独的博客中讲解, 后续整理,加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值