版权声明:转载请申明出处,谢谢 https://blog.csdn.net/qq_35495763/article/details/86598692
update time :2019-1-22 author:要你名三千又三千 type: 学习笔记
概念
- 持久化技术
数据的持久化:就是将那些内存中的瞬时数据保存到存储设备中,
保证机器关机的情况下,数据不丢失。
三种方式实现
1.文件存储、SharedPreference存储、数据库存储
方式一
文件存储
- 适合存储一些简单的文本文件或者二进制数据。
- 文件 名不可以包含路径,默认的存储方式到data/data/<包名>/files/
- 操作模式:MODE_PRIVATE:覆盖原文,MODE_APPEND:添加内容
- DDMS 的 File Explorer 来查看一下文件位置
public void save() {
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
openFileOutput()方法能够得到一个 FileOutputStream 对象,然后再借助它构建出一个
OutputStreamWriter 对象,接着再使用 OutputStreamWriter 构建出一个 BufferedWriter 对象,
这样你就可以通过 BufferedWriter 来将文本内容写入到文件中了
使用原始的Java方式读取文件内容
public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(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();
}
使用SharedPreference 存储
- 键值对的方式存储数据
- 支持多种数据类型的存储方式
- 默认的存储目录:在/data/data//shared_prefs/目录
- 操作模式:MODE_PRIVATE ,MODE_MULTI_PROCESS(用于多进程读写)
- 两种方式:context 的getSharedPreference(文件名,操作模式)方式,Activity 的getPreference(操作模式)方法(默认文件名为当前活动的名称)
三步实现。
- 调用 SharedPreferences 对象的 edit()方法来获取一SharedPreferences.Editor 对象。
- 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。
- 调用 commit()方法将添加的数据提交,从而完成数据存储操作
SharedPreferences.Editor editor = getSharedPreferences("data",
MODE_PRIVATE).edit();
editor.putString("name", "Tom");
editor.putInt("age", 28);
editor.putBoolean("married", false);
editor.commit();
如何获取存储的数据的获取方法
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
Log.d("MainActivity", "name is " + name);
Log.d("MainActivity", "age is " + age);
Log.d("MainActivity", "married is " + married);
使用SQLite数据库存储数据
简介:
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
关键字:数据库、嵌入式
补充:
litePal
litePal:一个Android库,让开发人员使用SQLite数据库
开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删改查的操作。
关键字:对象关系映射(ORM),功能封装。