Android数据存储与IO详解

本文详细介绍了Android中的三种数据存储方式:SharedPreferences存储、文件存储及SQLite数据库存储。针对每种存储方式的特点、应用场景及其API使用进行了深入浅出的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharedPreferences存储

SharedPreference简介:

当存储一些数据简单,而且格式简单,我们一般使用sharedPreference来存取数据。它的类型类似与key-value键值对的形式。 SharedPreference接口主要负责读取应用程序的Preference数据, 它提供了如下方法来访问SharedPreference的key-value数据。

这里写图片描述

SharedPreferences是一个接口并没有提供写入数据的能力,而是通过调用SharedPreferences的edit()方法获取Editor对象,Editor对象提供了如下方法来向SharedPreferences对象中写入数据:

这里写图片描述

SharedPreferences本身是一个接口,无法创建实例,只能通过Context提供的getSharedPreference(String name,int mode)来获取实例。
如:

 SharedPreferences  sp = getSharedPreferences("XX" ,MODE_WORLD_READABLE)  ;
 SharedPreferences.Editor  editor = sp.edit();
//这样就创建好一个SharedPreferences对象。

这里的mode有以下几个值:
Context.MODE_PRIVATE:指定该SharedPreferences只能被本程序读写。
Context.MODE_WORLD_READABLE:指定该SharedPreferences能被其他应用程序读,不能写。
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences能被其他应用程序读,写。

File存储

文件存储是android中最基本的一种数据存储方式,它不对存储的内容进行任何格式的处理。在java中有一套体系用于读取文件,其中有FileInputStream和FileOutputStream,有这些IO流,我们就可以很方便的访问磁盘的文件了。其实在android中也同样支持。

openFileOutput和openFileInput

Context中提供了两个方法:
FileInputStream openFileInput(String name): 打开应用程序的数据文件夹下name对应的输入流。
这个比较简单只有一个参数,
FileOutputStream openFileOutput(String name,int mode ): 打开应用程序的数据文件夹下name对应的输出流。这个方法中有两个参数,其中mode主要有两种模式可选:

MODE_PRIVATE:一般是默认的操作模式。表示当指定同样的文件名时,所写入的数据会覆盖原来的数据。

MODE_APPEND:如果原文件已存在,则在其后追加内容,不存在就创建。

MODE_WORLD_READABLE:指定该文件的内容能被其他应用程序读取。

MODE_WORLD_WRITEABLE:指定该文件能被其他应用程序读,写。

后两种会容易引起安全漏洞,所以我们一般不会去这两种。

SQLite数据库存储

SQLite是一款轻量级的关系型数据库,是Android内置的数据库,功能也比较强大。我们如果有复杂的数据存储的话一般都用这个数据库来存储数据。

Android提供了SQLiteDatabase代表数据库,要想使用数据库,就的先创建数据库SQLiteDataBase对象,为了更好的管理数据库,Android专门提供了一个SQLiteOpenHelper帮助类,这样就可以很轻松的创建和升级数据库了。通过SQLiteOpenHelper的子类getReadableDatabase()和getWriteableDatabase()方法来打开数据库。

这两个方法有什么区别呢:
它们都可以创建或者打开一个数据库,如果数据库已经存在就直接打开,否则就再创建一个数据库。并返回一个可对数据库进行读写操作的对象。不同的是:当数据库不可写入的时候,getReadableDatabase()方法返回的是一个以只读的方式打开数据库,而getWriteableDatabase()会出现异常。

SQLiteOpenHelper有以下常用的方法:

SQLiteDatabase getReadableDatabase():以读写的方式打开数据库。
SQLiteDatabase getWriteableDatabase():以写的方式打开数据库。
void oncreate():第一次创建数据库的时候创建。
void onUpgrade():当数据库版本更新的时候调用该方法。
void close():关闭数据库。

会在下一篇叙述。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值