Android中的数据持久化技术

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","");//第二个参数是没有取到值后的默认值
    ~

你可能感兴趣的:(android)