天天看点

android第一行代码学习笔记——数据存储(文件存储和SharedPreferences存储)持久化技术

持久化技术

数据持久化就是指将内存中的瞬时数据保存到存储设备中,android中主要提供了三种方式:文件存储,SharedPrefences存储以及数据库存储

文件存储

简介

文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中,比较适合存储一些简单的文本数据或二进制数据

内容

存储

  1. 使用Context类的openFileOutput()方法获得一个FileOutputStream对象,然后使用java的IO流将数据存储到指定的文件中
  2. 该方法接收两个参数:第一个参数是文件名,第二个参数是文件的操作模式。

    文件名不可以包含路径,所有文件都是默认存储到/data/data/< package name>files/目录下的。

    文件操作模式有两种可以选:MODE_PRIVATE(默认的操作模式,若文件存在,则覆盖原文件中的内容)和MODE_APPEND(若文件存在,则追加写入,若不存在,则创建新文件)

读取

  1. 从文件中读取数据:使用Context类的openFileInput()方法获得FileInputStream对象,然后使用java的IO流进行文件读取。
  2. 该方法只接受一个参数,即要读取的文件名,然后系统会自动到/data/data/< package name>files/文件下加载这个问价,并返回一个FileInputStream对象,然后通过java的IO流将数据读取出来。

SharedPreferences存储

简介

SharedPreferences使用键值对的方式来存储数据,当保存一条数据时需要给这条数据提供一个键,然后在读取数据时通过键将对应的值读取出来。SharedPreferences还支持多种不同的数据类型存储

内容

  • 要使用SharedPreferences来存储数据,必须先获取到SharedPreferences对象。android中提供了三种方法获取SharedPreferences对象:
    • Context类中的getSharedPreferences()方法
      • 此方法接受两个参数:第一个参数指定SharedPreferences文件的名称,第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种模式,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写
    • Activity类中的getPreferences()方法
      • 该方法和Context类的getSharedPreferences()方法类似,但他只接受一个操作模式参数,此方法会自动将当前活动的类名作为SharedPreferences的文件名
    • PreferenceManager类中的getDefaultSharedPreferences()方法
      • 这是一个静态方法,它接受一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
  • 向SharedPreferences文件中存储数据,主要分为三步:
    • 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
    • 向SharedPreferences.Editor对象中调用putXxx()方法添加数据
    • 调用apply()方法将添加的数据提交,从而完成数据存储操作
  • 从SharedPreferences中读取数据,SharedPreferences对象中每种get方法都对应了SharedPreferences.Editor中的一种put方法。get方法接受两个参数,第一个参数是键,第二个参数是默认值,即当传入的键找不到对应的值时会返回该值。
    SharedPreferences.Editor editor = getSharedPreferences("date", MODE_PRIVATE).edit();
    editor.putInt("age", 19);
    editor.apply();
    ---------------------
    SharedPreferences sharedPreferences = getSharedPreferences("date", MODE_PRIVATE).edit();
    Log.d("MainActivity", sharedPreferences.getInt("age", 0));