数据存储简介
Android提供了四种数据存储方式:
-
使用Preference存储数据:Preference采用“键-值”对方式组织和管理数据,其数据存储在XML文件中。相对于其他方式,它是一个轻量级的存储机制。该方式实现比较简单,适合简单数据的存储。
-
使用File存储数据:文件存储的特点介于Preference与SQLite之间。从存储量来看,文件存储是一个“重量级”存储机制,比Preference方式更适合存储较大的数据;从存储结构化来看,这种方式不同于SQLite,不适合结构化的数据存储。
-
使用SQLite存储数据:SQLite使用数据库作为存储方式,它是一个重量级的存储机制,适合大数据量的数据存储,通过这种方式能够很容易的对数据进行增加、插入、删除、更新等操作。相比Preference和文件存储,使用SQLite较为复杂。
-
ContentProvider:数据共享,四大组建之一。
存储的位置
SharedPreferences
Preference提供了一种轻量级的数据存储方式,主要应用在数据量比较少的情况下。它以“key-value”方式将数据保存在一个XML文件中。
SharedPreferences常用的方法 :
存
第一,获取SharedPreferences
第二,调用SharedPreferences类的edit()方法,获取SharedPreferences.Editor对象;
第三,调用一个SharedPreferences.Editor对象的putXXX()的方法获取数据;
第四,使用commit()方法提交数据。
commit 同步提交,直接提交到磁盘
apply 异步提交,先提交到内存,在写入磁盘
取
第一,获取SharedPreferences对象;
第二,调用一个SharedPreferences对象的gettXXX()的方法获取数据;
拼接
####File存储
文件存储方式不受类型限制,可以将一些数据直接以文件的形式保存在设备中,如文本文件、PDF、音频、图片等。如果需要存储复杂数据,可以使用文件进行存储。Android提供了读写文件的方法。
通过Context.openFileInput()方法可以获取标准的文件输入流(FileInputStream),读取设备上的文件;通过Context.openFileOuput()方法可以获取标准的文件输出流(FileOutputStream)。
存
try {
//1、获取文件输出流,操作模式为私有
FileOutputStream fileOutputStream = openFileOutput("myfile.txt", MODE_PRIVATE);
//2、往文件里写内容
fileOutputStream.write(edit.getText().toString().getBytes());
//3、关闭输出流
fileOutputStream.close();
Log.d("TAG","存结束了");
} catch (IOException e) {
e.printStackTrace();
}
取:第一种
try {
//1、获取文件输入流
FileInputStream fileInputStream = openFileInput("myfile.txt");
byte[] bytes = new byte[fileInputStream.available()];//2、创建字节数组来接收数据 fileInputStream.read(bytes); //3、读
fileInputStream.close(); //4、关闭流
//把读出来的数据显示出来
gettxt.setText(new String(bytes));
Log.d("TAG","取结束了");
} catch (IOException e) {
e.printStackTrace();
}
取:第二种
try {
FileInputStream inputStream = openFileInput(FILE_NAME); //1、获取文件输入流
byte[] bytes = new byte[1024];//2、创建字节数组来接收数据
int length = 0;
StringBuffer stringBuffer = new StringBuffer();
while ((length = inputStream.read(bytes)) != -1){
stringBuffer.append(new String(bytes,0,length));
}
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}