Android 数据存储
Android 数据存储
ruoxijunAndroid 数据存储
SharedPreferences 轻量级存储:
SharedPreferences 是存储共享变量的接口,文件路径位于 “/data/data/ 应用程序包 /shared_prefs” 目录下的 xml 文件。
java
1 | // 获取共享文件对象,参1为文件名不存在则创建,参2为操作文件的模式推荐使用:'MODE_PRIVATE' |
Editor 接口为 SharedPreferences 接口的内部接口,专编辑共享数据。通过共享对象的 edit()
获取到该对象。
java
1 | // 获取该共享文件的编辑对象 |
以上都以 String
数据演示,还有其它数据可选。
Android 自带数据库 SQLite 存储:
Android 数据库文件存在 “/data/data/ 应用程序包 /databases” 文件夹中
SQLiteOpenHelper :
Android 操作数据库首先需要继承 SQLiteOpenHelper
抽象类。我们需要实现 3 个方法:
onCreate
:只在创建数据库时调用一次此方法,此方法中一般写入创建表语句。onUpgrade
:升级数据库方法。构造函数
:构造函数主要为了向父构造方法传参,参 2 为数据库名,参 3 为游标工厂对象为null
时有默认的游标工厂,参 4 为数据库版本数。
java
1 | public class MySqlite extends SQLiteOpenHelper { |
- 创建继承
SQLiteOpenHelper
类的对象后,并未创建数据库它只利用构造方法记录 (赋值) 了数据库的信息。 - 只有第一次调用
getWritableDatabase
或getReadableDatabase
方法时才会创建数据库并调用此类的onCreate
方法 (创建表) 所以该方法内不能使用此 get 方法否则会造成无限递归。 - 调用
getWritableDatabase
或getReadableDatabase
方法,会返回SQLiteDatabase
数据库的操作对象。
java
1 | String sql = "SQL 原生语句"; |
数据库查询的所有类型数据都可通过游标 ( Cursor
) 的 getString
方法获取到。
关于数据库的操作,由于数据库的原生语句容易出错。Android 官方还提供了许多 API 方法简易操作,请自查。
File 文件存储:
Android 分为内部存储和外部存储。上面介绍的轻量级 xml 键值对文件存储和数据库存储都是是内部存储。
内部存储还有 /data/data/应用程序包
下的 files
和 cache
文件夹管理的文件。 我们可以通过上下文对象的 getFilesDir()
和 getCacheDir()
方法获取它们两的 file 对象。
内部存储 files 文件夹下:
操作都基于 Java 的 IO 流进行。
- 文件存储java
1
2
3
4// 通过调用上下文的openFileOutput方法,拿到 写 对象
FileOutputStream out=openFileOutput("test.txt",MODE_PRIVATE);
out.write("hello world".getBytes());
out.close(); - 文件取出java
1
2
3
4
5
6// 通过openFileInput方法,拿到 读 对象
FileInputStream in=openFileInput("test.txt");
byte[] data=new byte[1024];
int i=in.read(data);
System.out.println(new String(data,0,i));
in.close();