一、文件存储
1.将数据存储到文件中
Android中的文件存储机制是一种基本的存储数据的方式,其不对数据进行任何格式化的处理,所以这种方式适用于存储一些简单的文本数据或者二进制数据。
Context中提供一个openFileOutput()的方法,将数据存储在指定的文件下;该方法实现传入两个数据参数,
其中一个是参数是文件名,注意这里的文件名不可以包含路径,它的默认讯储存位置是、data/datta/
第二个是文件的操作模式,其数值有两种,默认的是MODE_PRIVATE表示当指定的文件名相同时,写入的数据会覆盖源文件中的内容;另一个是MODE_APPEND表示的是如果文件夹下存在相同的文件名,则是往文件里追加内容;其实本来是的操作,模式有四个,其他两个MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE,由于这两个模式允许其他的程序操作文件,所以在以前的版本就取消了。
2.从文件中读取数据
类似于将数据存储到文件中,Context 类中还提供了一个openFileInput()方法,用于从文件中读取数据。这个方法要比openFile0utput()简单- -些,它只接收-一个参数, 即要读取的文件名,然后系统会自动到/data/data/files/目录 下去加载这个文件,并返回一个FileInputStream对象,得到了这个对象之后再通过Java流的方式就可以将数据读取出来了。以下是一段简单的代码示例,展示了如何从文件中读取文本数据:
public String load() {
FileInputStream in = null;
BufferedReader reader = null;
St ringBuilder content = new St ringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader (new InputSt reamReader(in));
String line = "";
while ((line = reader. readLine()) != null) {
content . append(line);
} catch (IOException e) {
e, printStackTrace();
} finally {
if (reader != null} {
try {
reader . close();
} catch (IOException e) {
e. printStackTrace();
}
return content. toString();
在这段代码中,首先通过openFileInput()方法获取到了一个FileInputStream对象,然后借助它又构建出了一个InputStreamReader对象,接着再使用InputStreamReader构建出一个BufferedReader对象,这样我就可以通过BufferedReader 进行- -行行地读取,把文件中所有的文本内容全部读取出来,并存放在一一个StringBuilder对象中,最后将读取到的内容返回就可以了。
二、SharedPreferences存储
1.将数据存储到SharePreferences中
首先需要拿到SharedPreferences对象
主要有三种方法:
(1)Context类通过getSharedPreferences()方法
第一个参数指定了文件名,如果不存在则会创建一个SharedPreferences所有的文件都是存放在 /data/data/包名/shared_prefs/ 目录下,第二个参数指定操作模式,MODE_PRIVATE和0效果一样,代表只允许当前程序进行读写
(2)Activity类中getPreferences()方法
只接收一个操作模式作为参数,因为使用这个方法会自动将当前类名作为SharedPreferences文件名
(3)PreferenceManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,接收一个Context参数,并自动使用当前包名作为前缀来命名SharedPreferences。
保存数据主要分三步:
(1)调用SharedPreferences对象的edit()方法来得到SharedPreferences.Editor对象
(2)向SharedPreferences.Editor添加数据
字符串类型用putString() 、布尔类型用putBoolean(),以此类推
(3)调用apply()提交,完成保存操作
2.从SharePreferences中读取数据
SharedPreferences读取数据更为简单
SharedPreferences提供了一系列get方法,每种都对应了SharedPreferences.Editor中的一种put方法
读取字符串可以用getString()
读取布尔型数据可以用getBoolean()
接收2个参数:
第一个参数是键值,与保存传入的键值对应
第二个参数是默认值,当传入的键值读取不到数据的时候,就用默认值
三、SQLite存储
1.创建数据库
Android 提供了SQLiteOpenHelper帮助我们对数据库进行创建和升级,它是一个抽象类,我们需要创建一个类去继承它,同时重写OnCreate和onUpgrade方法,用于创建和升级数据库。
SQLiteOpenHelper有两个重要的实例方法:
都是用于创建一个数据库 或者 打开一个现有的数据库并返回一个可对数据库进行读写操作的对象。
区别在于:
getReadableDatabase()在数据库不可写入的时候,如磁盘空间已满,则返回的对象将以只读的方式去打开数据库
而getWritableDatabase()将会出现异常(我们常用后者,即getWritableDatabase)。
SQLiteOpenHelper有两个构造方法可供重写,一般使用参数少一点的那个构造方法,有4个参数:
第一个参数是 Context
第二个参数是 数据库名,创建数据库的时候将使用这个名字命名
第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般传入null
第四个参数是 数据库版本号,可用于对数据库进行升级操作。
构建出SQLiteOpenHelper的实例后,再调用它的getReadableDatabase()或getWritableDatabase()就完成了创建数据库,且重写的onCreate()方法也会被一起执行。
2.升级数据库
主要利用onUpgrade()方法进行数据库升级。
3.添加数据库
在布局文件中加入一个按钮用于添加数据。