Android的持久层开发

上传人:飞*** 文档编号:54592250 上传时间:2018-09-15 格式:PPT 页数:46 大小:210.50KB
返回 下载 相关 举报
Android的持久层开发_第1页
第1页 / 共46页
Android的持久层开发_第2页
第2页 / 共46页
Android的持久层开发_第3页
第3页 / 共46页
Android的持久层开发_第4页
第4页 / 共46页
Android的持久层开发_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《Android的持久层开发》由会员分享,可在线阅读,更多相关《Android的持久层开发(46页珍藏版)》请在金锄头文库上搜索。

1、第 5 章 Android的持久层开发 内容提要: 1 Android的文件 2 Android的SharedPreferences存储类 3 Android的SQLite数据库 4 Android的内容提供器(ContentProvider)组件,目的要求: 1. 了解文件数据的存储与读取 2. 了解把文件存放在SDCard 3. 了解使用SAX、DOM或pull解析XML文件 4. 了解使用多线程下载文件 5. 了解使用SharedPreferences进行数据存储 6. 了解访问SharedPreferences中的数据 7. 了解使用SQLite数据库存储数据 8. 了解使用SQLit

2、eOpenHelper对数据库进行版本管理,9. 了解使用SQLiteDatabase操作SQLite数据库 10. 了解使用事务操作SQLite数据库 11. 了解使用ContentProvider共享数据 12. 了解Uri 13. 了解ContentProvider类的主要方法 14. 了解使用ContentResolver操作ContentProvider中的数据,首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。 【例5.1】用openFileOut

3、put()方法把数据输出到文件中。 public class FileActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . FileOutputStream outStream = this.openFileOutput(“LiFoxSoftware.txt“, Context.MODE_PRIVATE); outStream.write(“成都小狐狸软件播客 “.getBytes(); outStream.close(); openFileOutput()方法的第一参数用于指定

4、文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/files目录,如: /data/data/cn.LiFoxSoftware.action/files/LiFoxSoftware.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/files目录就可以看到该文件。 openFileOutput()方法的第二参数用于指定操作模式,有四种模式

5、,分别为: Context.MODE_PRIVATE = 0 Context.MODE_APPEND = 32768 Context.MODE_WORLD_READABLE = 1 Context.MODE_WORLD_WRITEABLE = 2,5.1 Android的文件 使用文件进行数据存储,使用文件进行数据存储,Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND Context.MODE_APPEND:模式会检查文

6、件是否存在,存在就往文件追加内容,否则就创建新文件。 Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。 如果希望文件被其他应用读和写,可以传入: openFileOutput(“LiFoxSoftware.txt“, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); andro

7、id有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。,读取文件内容,如果要打开存放在/data/data/files目录应用私有的文件,可以使用Activity提供openFileIn

8、put()方法。 FileInputStream inStream = this.getContext().openFileInput(“LiFoxSoftware.txt“); Log.i(“FileTest“, readInStream(inStream); readInStream()的方法请看本页下面例子。 【例5.2】读取文件内容的readInStream()方法: public static String readInStream(FileInputStream inStream) try ByteArrayOutputStream outStream = new ByteArra

9、yOutputStream(); byte buffer = new byte1024; int length = -1; while(length = inStream.read(buffer) != -1 ) outStream.write(buffer, 0, length); outStream.close();,读取文件内容,或者直接使用文件的绝对路径: File file = new File(“/data/data/cn.LiFoxSoftware.action/files/LiFoxSoftware.txt“); FileInputStream inStream = new F

10、ileInputStream(file); Log.i(“FileTest“, readInStream(inStream); 注意:上面文件路径中的“cn.LiFoxSoftware.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。 对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。 Activity还提供了getCacheDir()和getFilesDir()方法: getCacheDir()方法用于获取/

11、data/data/cache目录 getFilesDir()方法用于获取/data/data/files目录,把文件存放在SDCard,使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移动硬盘或U盘。 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以

12、使用DOS命令进行创建,如下: 在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img: mksdcard 2048M D:AndroidToolsdcard.img 在程序中访问SDCard,你需要申请访问SDCard的权限。 【例5.3】在AndroidManifest.xml中加入访问SDCard的权限如下: ,把文件存放在SDCard,要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。 注意:访问SDCard必须在AndroidManifest.xml中加入访

13、问SDCard的权限 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) File sdCardDir = Environment.getExternalStorageDirectory();/获取SDCard目录 File saveFile = new File(sdCardDir, “LiFoxSoftware.txt”); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(“成都小狐狸软件

14、播客 “.getBytes(); outStream.close(); Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。 Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写: File sdCardDir = new File(“/sdcard“); /获取SDCard目录 File saveFile = new

15、File(sdCardDir, “LiFoxSoftware.txt“); /上面两句代码可以合成一句: File saveFile = new File(“/sdcard/LiFoxSoftware.txt“); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(“成都小狐狸软件播客 “.getBytes(); outStream.close();,使用SAX或者DOM或者pull解析XML文件,在Android平台上可以使用Simple API for XML(SAX) 、 Docume

16、nt Object Model(DOM)和Android附带的pull解析器解析XML文件。 下面是本例子要解析的XML文件: 【例5.4】要解析的XML文件. /文件名称:LiFoxSoftware.xml 李朝蓉 30 李朝莉 25 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见后面【例5.5】 。,【例5.5】定义一个Person javabean用于存放解析出来的LiFoxSoftware.xml内容: public class Person private Integer id; private String name; private Short age; public Integer getId() return id; public void setId(Integer id) this.id = id; public String getName() return name; ,使用SAX读取XML文件,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号