Android第四章 Android数据存储与访问

一、简单存储

1、简单存储

1.1、SharedPreferences

        SharedPreferences是Android中较为简单的数据存储技术,常用来存储一些轻量级的数据,采用key-value(键值对)的方式保存数据。类似于Web程序的Cookie,通常用来保存一些配置文件数据、用户名及密码等。

        SharedPreferences还可实现不同应用程序间的数据共享,支持三种访问模式

(1)私有(MODE_PRIVATE),默认模式,该模式配置文件只允许本程序和享有本程序ID的程序访问。

(2)全局读(MODE_WORLD_READABLE),允许其他程序读文件

(3)全局写(MODE_WORLD_WRITEABLE),允许其他程序写文件

如果既要全局读又要全局写,可将访问模式设置为

MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE.

        除了定义访问模式,还要定义SharedPreferences的名称,该名称是其在Android文件系统中保存的文件名称,一般声明为常量字符串,以方便在代码中多次使用。

        getSharedPreferences()为Android系统函数,通过它可获得SharedPreferences实例

        获取SharedPreferences实例后,通过SharedPreferences.Editor类对其进行修改,完成数据设置。最后调用commit()函数保存数据。

SharedPreferences广泛支持各种基本数据类型,包括整型、布尔型、浮点型和长整形等,如:

SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putString("Name", "Tom");

editor.putFloat("Height",1.78f);

editor.commit();

        如果需要从已保存的SharedPreferences中读取数据,同样调用getSharedPreferences()函数,并在函数的第1个参数中指明需要访问的SharedPreferences名称,最后通过get<Type>()函数获取保存在SharedPreferences中的键值对。如:

        Android系统为每个应用程序建立了与包同名的目录,用来保存应用程序产生的数据文件,包括普通文件、SharedPreferences文件和数据库文件等。

        SharedPreferences保存后生成的是XML文件,保存在/data/data/<package name>/shared_prefs目录

1.2、使用SharedPreferences存储用户信息

案例:使用SharedPreferences保存用户登录名和密码

主要步骤:

创建新的工程SharedPreferences.

修改activity_main.xml,增加相关控件。

修改MainActivity.java,引用控件,添加按钮监听器,添加SharedPreferences

对象保存数据。

二、文件存储

        使用SharedPreferences存取少量数据外,Android系统更多使用文件系统进行数据存储。

        Android系统提供两类物理存储位置:内部存储(lnternal File Storage)和外部存储(External File Storage)。

1、内部存储(Internal Storage)

        内部存储指的是Android系统允许应用程序创建仅能够自身访问的私有文件,即应用内部独有的存储,这部分存储的文件、数据,只能被应用自身访问到,其他应用都没有权限访问。

        文件保存在设备的内部存储器上,位于系统的../data/data/<packagename>/files目录中。

一般情况下,/data开头的路径都是Internal Storage。而一般应用所能够访问到的应用内部私有存储

应用内部私有存储:

·/data/user/0/<包名

·/data/user/0/<包名>/files#存放文件数据

·/data/user/0/<包名>/databases#存放Sqlite的数据库文件

·/data/user/0/<包名>/shared_prefs #存放SharedPreference的数据

./data/user/0/<包名>/cache#存放缓存文件

        Android使用Linux的文件系统,支持标准Java的IO类和方法,存取文件主要使用数据流的方式进行。

        流是一个可被顺序访问的数据序列,是对计算机输入数据和输出数据的抽象,有输入流和输出流之分,输入流用来读取数据,输出流用来写入数据

常用的文件字节数据流

(1)FilelnputStream:文件字节输入流

(2)FileOutputStream:文件字节输出流

为了能使用字节流,可以使用openFileOutputStream()和openFilelnput()函数。

openFileOutputStream()的语法格式:

public FileOutputStream openFileOutput(String name, int mode)

第1个参数是文件名称,不可以包含描述路径的斜杠。第2个参数是文件操作模式。

使用openFileOutput()函数输出数据示例代码如下:

openFilelnput()函数语法格式为:

public FilelnputStream openFilelnput(String name)

参数为文件名,同样不允许包含描述路径的斜杠。使用openFilelnput()打开已有文件,并以二进制方式读取数据的示例代码如下:

FilelnputStream fis = openFilelnput("fileDemo.txt");

bytel l readBytes = new bytelfisavailable()];

while (fis.read(readBytes) !=-1){}

2、外部存储

外部存储指的是公共的存储,这部分存储理论上是全局可见的,所有的应用都

可以访问这部分数据,一般情况下,路径都是以/storage开头的,如

/storage/emulated/0就是属于外部存储。

        Android外部存储设备一般指Micro SD卡,存储在SD卡上的文件称为外部文件

        SD卡使用FAT文件系统,不支持访问模式和权限控制。Android模拟器支持SD卡的模拟,可以设置模拟器中SD卡的容量,模拟器启动后会自动加载SD卡。

        正确加载SD卡后,SD卡中的目录和文件被映射到/mnt/sdcard目录下。

        因为用户可以加载或者卸载SD卡,因此编程访问SD卡前要检测SD卡目录是否可用,如果不可用,说明设备中SD卡已经被卸载,如果可用,则直接使用标准的java.io.File类进行访问。

        使用SD卡存取文件,需要在程序的AndroidManifest.xml中注册用户对SD卡的权限,分别是加载卸载文件系统权限和向外部存储器写入数据的权限,如:

三、数据库存储

1、SQLite数据库

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值