第8章Android数据存储与IO.ppt
《第8章Android数据存储与IO.ppt》由会员分享,可在线阅读,更多相关《第8章Android数据存储与IO.ppt(54页珍藏版)》请在麦多课文档分享上搜索。
1、Android数据存储与IO,第8章,2018/10/11,1,Android 中的数据存储技术,手机作为特殊的移动存储设备,可以携带多种数据。例如:音频、视频、图片、通讯录,也包含应用程序私有数据,比如游戏进度、通关成绩等。 Android中提供了多种方式用于保存持久数据。这些方式的选择依赖于应用程序的需要,例如数据是应用程序独享还是可以被其他应用程序或者用户访问、数据存储空间的大小。,2018/10/11,2,Android 中的数据存储技术,Android有三种存储数据的方式: SharePreference:轻量级键-值方式存储,以XML文件方式保存。 文件:采用java.io.*库所
2、提供的I/O接口读写文件。 SQLit数据库:SQLite是轻量级嵌入式内置数据库。,2018/10/11,3,1. 简单存储,什么是SharePreferences? 问题一:用手机播放器播放音乐,我们希望重启播放器时,播放器能从上次停止的那首曲目开始播放,如何实现? 类似于我们常用的ini文件,用来保存应用程序的一些属性设置,常用于存储较简单的参数设置。 例如:用于保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。如设置的手机开机问候语。,2018/10/11,4,1. 简单存储(P306),SharePreferences SharedPreferences
3、是一种轻量级的数据保存方式 通过SharedPreferences可以将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中,而且SharedPreferences完全屏蔽了对文件系统的操作过程 开发人员通过调用SharedPreferences对NVP进行保存和读取。,2018/10/11,5,1. 简单存储,SharedPreferences不仅能够保存数据,还能够实现不同应用程序间的数据共享 SharedPreferences支持三种访问模式 私有(Context.MODE_PRIVATE):数据只能被本应用程序读写 全局读(Context.MODE_WO
4、RLD_READABLE):数据能被其他应用程序读,但不能写 全局写(Context.MODE_WORLD_WRITEABLE):数据能被其他应用程序写,但不能读,2018/10/11,6,1. 简单存储,获取SharedPreferences对象步骤: (1)定义SharedPreferences的访问模式; 下面的代码将访问模式定义为私有模式有时候需要将SharedPreferences的访问模式设定为既可以全局读,也可以全局写,这样就需要将两种模式写成下面的方式:,2018/10/11,7,1 简单存储,获取SharedPreferences对象步骤: (2)定义SharedPrefer
5、ences的名称,这个名称与在Android文件系统保存的文件同名。因此,具有相同的SharedPreferences 名称的NVP内容,都会保存在同一个文件中。(3)将访问模式和SharedPreferences名称作为参数,传递到getSharedPreferences()函数,并获取到SharedPreferences对象,2018/10/11,9,1 简单存储,写入数据: 利用前面获取的SharedPreferences对象的edit()方法获得它对应的Editor对象; 利用Editor对象提供的putXXX方法写入数据 调用Editor对象的commit()方法提交修改 Share
6、dPreferences广泛支持各种基本数据类型,包括整型、布尔型、浮点型和长型等等,1 简单存储,从已经保存的SharedPreferences中读取数据: 调用getSharedPreferences()函数,并在函数的第1个参数中指明需要访问的SharedPreferences名称 通过getXXX()函数获取保存在SharedPreferences中的NVPgetXXX()函数的第1个参数是NVP的名称 第2个参数是在无法获取到数值的时候使用的缺省值,1 简单存储,Example:08_SimplePreferenceDemo 用户在界面上输入的信息,通过SharedPreferenc
7、es在进行保存。 保存在SharedPreferences的信息可以被读取出来,并重新呈现在用户界面上。,2018/10/11,12,1 简单存储,我们已经知道了用Preferences来存取数据,那么这些数据究竟被保存在什么地方了呢? 其实,每安装一个应用程序时,SharedPreferences文件就保存在/data/data/shared_prefs目录下,其中的文件就是我们的数据:,2018/10/11,13,1 简单存储,在Linux系统中,文件权限分别描述了创建者、同组用户和其他用户对文件的操作限制。 x表示可执行,r表示可读,w表示可写,d表示目录,-表示普通文件。 因此,“-r
8、w-rw-rw”表示xml文件可以被创建者、同组用户和其他用户进行读取和写入操作,但不可执行 产生这样的文件权限与程序人员设定的SharedPreferences的访问模式有关,“-rw-rw-rw”的权限是“全局读+全局写”的结果 如果将SharedPreferences的访问模式设置为私有,则文件权限将成为“-rw-rw -”,表示仅有创建者和同组用户具有读写文件的权限。,1 简单存储,dateStore.xml文件是以XML格式保存的信息,内容如图如下:,789 ssm ,1 简单存储,访问其他应用程序的SharedPreferences必须满足三个条件: 共享者将SharedPrefe
9、rences的访问模式设置为全局读或全局写; 访问者知道共享者的包名称和SharedPreferences的名称 通过Context获得SharedPreferences对象; 访问者确切知道每个数据的名称和数据类型,2018/10/11,16,2018/10/11,17,2 文件存储,Android使用的是基于Linux的文件系统,程序开发人员可以建立和访问程序自身的私有文件,也可以访问保存在资源目录中的原始文件和XML文件,还可以在SD卡等外部存储设备中保存文件。,2018/10/11,18,2 文件存储内部存储(P404),Android系统允许应用程序创建仅能够自身访问的私有文件,文件
10、保存在设备的内部存储器上,在Linux系统下的/data/data/files目录中Android系统支持标准Java的IO流体系 FileInputStream类 FileOutputStream类 Context提供了能够简化读写流式文件过程的函数 openFileOutput():打开文件输入流 openFileInput():打开文件输出流,2018/10/11,19,2 文件存储内部存储,openFileOutput()函数 openFileOutput()函数用于写入数据。如果指定的文件不存在,则创建一个新的文件。 openFileOutput()函数的语法格式如下第1个参数是文件
11、名称,这个参数不可以包含描述路径的斜杠 第2个参数是操作模式 函数的返回值是FileOutputStream类型(字节流),2 文件存储-内部存储,Android系统支持四种文件操作模式,2 文件存储-内部存储,使用openFileOutput()函数建立新文件的示例代码如下第1行代码定义了建立文件的名称fileDemo.txt 第2行代码使用openFileOutput()函数以私有模式建立文件 第4行代码调用write()函数将数据写入文件 第5行代码调用flush()函数将所有剩余的数据写入文件 第6行代码调用close()函数关闭FileOutputStream,2 文件存储-内部存储
12、,openFileOutput()函数 为了提高文件系统的性能,一般调用write()函数时,如果写入的数据量较小,系统会把数据保存在数据缓冲区中,等数据量累积到一定程度时再一次性的写入文件中 flush()函数,可以将缓冲区内所有的数据写入文件 文件操作结束后,用close()关闭文件。,2018/10/11,23,2 文件存储-内部存储,openFileInput()函数 openFileInput()函数用于打开一个与应用程序联系的私有文件输入流; 当文件不存在时抛出FileNotFoundException 异常; openFileInput()函数的语法格式如下:第1个参数也是文件名
13、称,同样不允许包含描述路径的斜杠,2018/10/11,24,2 文件存储-内部存储,使用openFileInput ()函数打开已有文件的示例代码如下上面的两部分代码在实际使用过程中会遇到错误提示,因为文件操作可能会遇到各种问题而最终导致操作失败,因此代码应该使用try/catch捕获可能产生的异常,2 文件存储-内部存储,Example:DataStoreCh08 用户界面如图。程序运行后,在 /data/data/com.example.datastorech08/files/目录下,找到了新建立的file1.txt文件,2018/10/11,26,要求: 1.以用户指定文件名传递给Fi
14、leIOActivity 2.如果文件存在读取文件内容,并显示 3.修改内容后,点击“保存修改”,存储文件内容指定文件中。,2 文件存储-内部存储,gh.txt从文件权限上进行分析,“-rw-rw-”表明文件仅允许文件创建者和同组用户读写,其他用户无权使用 文件的大小为5个字节,2018/10/11,27,2 文件存储外部存储,Android的外部存储设备指的是SD卡(Secure Digital Memory Card),是一种广泛使用于数码设备上的记忆卡 不是所有的Android手机都有SD卡,但Android系统提供了对SD卡的便捷的访问方法,2018/10/11,28,2 文件存储外部
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ANDROID 数据 存储 IOPPT
