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 应用程序包文件 (APK)
  3. Android 动态加载布局文件
  4. android 工程里缺少 R.java 文件原因和解决方法
  5. 使用pull解析器操作xml文件
  6. 解决android一直在running,打不开文件,下载不了gradle包的方法
  7. 【android开发】解析xml文件①
  8. 巧用布局文件实现Android中实现事件监听机制

随机推荐

  1. android 风格
  2. Android入门教程(三)之------导入现有And
  3. 生成release版本的Android係統
  4. NDK版本与Android固件要求对应表
  5. Android 各种专业术语解释
  6. Android计时器正确应用方式解析
  7. 【Android】AndroidStudio空指针解决之:li
  8. Android屏幕尺寸详解
  9. QT--Android之全配置教程
  10. android view 的移动的几种方式