数据存储方式
- 文件存储:Android提供了openFileInput()和poenFileOutput()方法来读取设备上的文件,其读取方式与Java中I/O程序是完全一样的
- SharedPreferences:这是Android提供的用来存储一些简单的配置信息的一种机制,它采用了XML格式将数据存储到设备中。通常情况下,我们使用SharedPreferences存储一些应用程序的各种配置信息,如用户名、密码等
- SQLite数据库:SQLite是Android自带的一个轻量级数据库,它运算速度快,占用资源少,还支持基本SQL语法,一般使用它作为复杂数据的存储引擎,可以存储用户信息等
- ContentProvider:Android四大组件之一,主要用于应用程序之间的数据交换,它可以将自己的数据共享给其他应用程序使用
- 网络存储:需要与Android网络数据包打交道,将数据存储到服务器上,通过网络提供的存储空间来存储/获取数据信息
一、文件存储
-
将数据存入文件中
(1)内部存储
内部存储是指将应用程序中的数据以文件的形式存储到应用中,此时存储的文件会被其所在的应用程序私有化,如果应用程序想要操作本应用程序中的文件,则需要设置权限。当创建的应用程序被卸载时,其内部存储文件也随之被删除
(2)外部存储
外部存储是指数据以文件的形式存储到一些外部设备上,例如SD卡或设备内嵌的存储卡,属于永久性的存储方式。外部存储的文件可以被其他应用程序所共享,当将外部存储设备连接到计算机时,这些文件可以被浏览、修改和删除,因此这种方式不安全 -
从文件中读取数据
- 读取内部存储中的文件数据
String content=""
FileInputStream fis = null;
try{
fis = openFileInput("data.txt");//获取文件输入流对象
byte[] buffer = new byte[fis.available()];//创建缓冲区,并获取文件长度
fis.read(buffer);
content = new String(buffer);//转换为字符串
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fis!=null){
fis.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
首先通过openFileInput()方法获取到文件输入流对象,然后通过available()方法获取文件的长度并创建相应大小的byte数组作为缓冲区,再通过read()方法将文件内容读取到buffer缓冲区中,最后将读取到的内容转换成指定字符串
- 读取外部存储中的文件数据
String state = Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){
File SDPath = Environment.getExternalStorageDirectory();//获取SD卡路径
File file = new File(SDPath,"data.txt");//创建文件对象
FileInputStream fis = null;
BufferReader br = null;
try{
fis = new FileInputStream(file);//创建文件输入流对象
//创建字符输入缓冲流的对象
br = new