Android中的数据持久化技术

  • Android中的数据持久化技术
    • 文件储存
      • 具体用法
    • SharedPreferences储存方案
      • 具体用法

文件储存

  • 就是用java中的流来对数据进行操作
  • 文件储存是将数据原封不动的存储
  • 一般用于对简单的文本,二进制进行存储
  • 如果你需要用文本储存方式存储比较复杂的数据,那就自己要有格式,方便解析
  • 默认放在内存卡data/data//file/

具体用法

  • Context中提供了openFileOutput和openFileInput方法,

  • 直接看代码吧

  • 需求:用文件储存的方式储存一段文本,然后用文本储存的方式读出文本

  • 需要注意的一点,在output流没有关闭时,是无法用input流读取output中的数据的

  • 原因就是,只有流关闭后,才会保存数据到储存设备中

    ~~~java
    //文件流,主要将数据原封不动的存储,所以底层还是字节流
    FileOutputStream out;
    FileInputStream in;

      //字符流缓冲区  BufferedWriter bw=null;  BufferedReader br=null;  String data ="This is ma data";  try{      //获取文件流,第一个参数是文件名,第二个是操作模式      //MODE_PRIVATE:同名文件覆盖,表示只有当前应用可以读,可以理解为文件内容是private的无法访问,      // 就不能追加,所以就直接覆盖      //MODE_APPEND:由权限名可知,append应用到结尾,意思是有同名文件      //就在结尾追加      out=openFileOutput("data",MODE_APPEND);      //将文件流传到转换流中,再用转换流将二进制流转换成字符流      //因为这里存储的都是字符,所以转换后用带有字符缓冲区的流来操作      bw=new BufferedWriter(new OutputStreamWriter(out));      bw.write(data);  }catch (IOException e){      e.printStackTrace();  }finally {//一定会执行的代码块          try{              if(bw!=null) //记得关闭流                  bw.close();          }catch (IOException e){              e.printStackTrace();          }  }  //读  try{      in=openFileInput("data");      br=new BufferedReader(new InputStreamReader(in));      String line="";      StringBuffer sb=new StringBuffer();      while((line=br.readLine())!=null){          sb.append(line);      }      Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();  }catch (IOException e){      e.printStackTrace();  }finally {      if(br!=null)          try {              br.close();          }catch (IOException e){              e.printStackTrace();          }  }

    }
    ~~~

SharedPreferences储存方案

  • SharedPreferences是一种以xml格式,以键值对的形式存储数据的存储方案
  • 这方案支持的数据形式很多,比如整型,布尔型,字符型,意思是你存的是什么类型,取出来也是什么类型
  • 默认放在内存卡data/data//shared_prefs/

具体用法

  • 存数据
  • 获取SharedPreferences实例

    ~~~java
    //一共有3种方法

    //调用Activity的方法
    //这种方法只接收一个参数,设置权限,目前也只有一种权限
    //该方法会自动将文件以活动名称命名
    SharedPreferences sp=getPreferences(MODE_PRIVATE);

    //调用Context方法
    //接收两个参数,文件名,权限
    SharedPreferences sp=getSharedPreferences(“data”,MODE_PRIVATE);

    //调用PreferencesManager类的静态方法,传入Context
    SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(this);
    ~~~

  • 获取Editor,添加数据,保存数据

    ~java
    SharedPreferences.Editor e;
    e= sp.edit();//获取实例
    e.putBoolean("check",true); e.putString("account","jj";
    e.putString("password","fd");
    e.apply();//将数据保存
    ~

  • 取数据

    • 用SharedPreferences实例直接通过键取值

    ~java
    sp.getString("account","");//第二个参数是没有取到值后的默认值
    ~

更多相关文章

  1. Hello Android(安卓)- SQLite数据库操作
  2. Android利用Fiddler进行网络数据抓包
  3. Android(安卓)NDK
  4. Android打包成jar文件方法总结
  5. Android中的Adapter 详解(三)
  6. Android(安卓)Studio 简单介绍和使用问题小结
  7. mybatisplus的坑 insert标签insert into select无参数问题的解决
  8. python起点网月票榜字体反爬案例
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android使用的MQTT客户端
  2. Android(安卓)ListFragment自定义view报
  3. Android中的Handler、Looper、Message简
  4. Android小米(miui)获取通话记录为null解决
  5. 解决Cordova https请求异常
  6. Android(安卓)NDK 知识系列(五)
  7. 『转』Android(安卓)Intent常见应用
  8. Activity的四种启动方式
  9. android:textAppearance设置文字外观
  10. Android清除本地数据缓存代码案例