笔记 - Android - 5.数据存储和访问、XML等

Android -- 数据存储和访问:

Android下的文件访问权限:
    r:readable可读
    w:writeable可写
    x:可执行
    Permissions(权限):
        - --- --- ---
    第一(位置0)表示文件或目录
        > - 表示文件
        > d 表示目录
    第2~4(位置1~3)表示当前用户对文件所具有的权限
    第5~7(位置4~6)表示当前用户所在组对文件所具有的权限
    第8~10(位置7~9)表示其他用户对该文件所具有的权限
    
    当前用户:每一个不同的应用程序都对应一个不同的用户,该用户就是该应用程序的当前用户
    当前用户组:当前用户所在的组
        通常情况下,Android下的每一个应用程序都对应一个独立的用户,都对应一个独立的用户组
        
    其他用户:除了应用程序自身对应的用户之外,其他的应用程序所对应的用户都称之为其他用户
    
    Linux chmod命令:chmod -> change mode 改变模式的意思,该Linux命令可以用来改变一个文件的权限
        用法:chmod 参数 文件名
            参数:该参数是一个二进制数的十进制表现形式,该二进制表示的是文件的权限,10个位置,不算第一位,
                有权限用1表示,无权限则用0表示,每三位一组,每组二进制数的十进制连起来则是该参数。
                如: - rwx rw- --- 该权限的二进制表示为
                      111 110 000 对应的十进制则为
                       7   6   0  连起来就是 760,760就是该参数

一、保存文件到手机内存
    SharedPreferences的使用:该对象可以用来保存数据信息,最终会在程序数据目录下生成一个shared_prefs文件夹,
        shared_prefs文件夹下会生成一个xml配置文件,数据就保存在这个xml文件中。
        
        使用SharedPreferences存数据:
            1.创建对象,通过上下文的getSharedPreferences(String name, int mode) 方法获得一个ShardPreferences对象,
            2.创建一个编辑器对象Editor,通过SharedPreferences对象的edit()方法,
            3.使用编辑器对象存入数据,通过调用Editor.putXxx(key, value)方法,
                putXxx()方法有
                putString(String key, String value),
                putBoolean(String key, boolean value),
                putFloat(String key, float value),
                putLong(String key, long value),
                putStringSet(String key, Set<String> value),该方法value是一个Set<String>集合
            4.最后一步必不可少,提交数据,调用Editor.commit()方法,只有调用了该方法后,数据才能正确的保存到shared_prefs文件夹
                下的xml文件。
            
        使用SharedPreferences读取数据:
            1.创建对象,与上述方法相同,
            2.调用SharedPreferences对象的getXxx(key, defaultValue)方法
                > String key:存入数据时所使用的key
                > defaultValue:默认值,当getXxx()方法没有取到数据时,返回该默认值。
                > getXxx()方法有:
                    getString(String key, String defValue)
                    getBoolean(String key, boolean delValue)
                    getLong(String key, long delValue)
                    getFloat(String key, float defValue)
                    getStringSet(String key, Set<String> defValue)
                与Editor对象的putXxx()方法对应。
        
二、保存文件到手机sd卡
    Environment的使用:环境,一个静态工具类,可以操作外部存储设备SD卡,无序创建对象。
    将数据存储到SD卡:
    1.判断外部存储设备是否可用
        外部存储设备状态常量:
            String Environment.MEDIA_MOUNTED :外部存储设备状态可用
            String Environment.MEDIA_UNMOUNTED:外部存储设备状态不可用
        方法:
            static String Environment.getExternalStorageState():返回当前外部存储设备的状态(可用或不可用);
    2.获取外部存储设备的路径
        方法:
            File Environment.getExternalStorageDirectory():返回外部存储设备的跟目录的File对象;
    3.使用外部存储设备时,需要添加android.permission.WRITE_EXTERNAL_STORAGE 权限
    
三、生成Xml的两种方式
    1.使用StringBuffer类拼接字符串,以流的形式将xml文件写出;
    2.使用XmlSerializer类生成xml文件,该方法内部也是以流的方式生成xml文件:
        * 创建XmlSerializer对象:
            通过Xml.newSerializer()方法即可创建一个XmlSerializer对象,Xml是一个xml相关的工具类。
            XmlSerializer serializer = Xml.newSerializer();
        * 设置XmlSerializer的输出流参数,可以是字节流和字符流
            serializer.setOutput(OutputStream os, String encoding);
            或serializer.setOutput(Writer wirter);
        * 开始文档
            serializer.startDocument(String encoding, boolean standalone);
                > encoding:xml文件声明所用的编码
                > standalone:该xml文件是否是单独的xml文件,不受其它xml文件约束
        * 开始节点
            serializer.startTag(String namespace, String name)
                > namespace:命名空间,通常为null
                > name:节点名称,不需要尖括号
        * 给节点添加属性
            serializer.attribute(String namespace, String name, String value)
                > namespace:命名空间,通常为null
                > name:属性名称
                > value:属性值
        * 给节点添加内容
            serializer.text(String text)
                > text:需要添加在节点中的文本字符串
        * 结束节点
            serializer.endTag(String name)
                > name:标签名称,同startTag()
        * 结束文档
            serializer.endDocument();
            
        * 开始节点到结束节点这个步骤可循环!!!
            养成好的习惯,在写完开始后,立马把结束写上,然后在中间写内容,这样不容易出错!!!

四、解析xml文档
    使用XmlPullParser对象解析Xml文档
    * 创建XmlPullParser对象
        通过Xml类的newPullParser()方法即可创建一个XmlPullParser对象
            XmlPullParser parser = Xml.newPullParser();
        或者通过一个工厂类也可创建一个XmlPullParser对象:
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser xpp = factory.newPullParser();
            
    * 设置输入流参数
        流可以是字符流或者字节流都可
        字节流:parser.setInput(InputStream in, String encoding)
            > in:对应文件的字节输入流对象
            > encoding:输入流编码
        字符流:parser.setInput(Reader reader)
            > reader:对应文件的字符输入流对象
    
    * 获得当前的事件类型
        事件类型:
            该解析Xml的过程是自上而下一行一行的解析,
            当指针指在文档开头时,对应的事件类型是 START_DOCUMENT,
            当指针指在开始节点处时,对应的事件类型是 START_TAG,
            当指针指在结束节点时,对应的事件类型是 END_TAG,
            当指针指在文档结尾时,对应的事件类型是 END_DOCUMENT。
            当指针指在开始标签和结束标签之间的文本时,事件类型是 TEXT
        需要用到事件类型常量有:
            ** XmlPullParser.START_DOCUMENT --> 表示文档的开始
            ** XmlPullParser.END_DOCUMENT --> 表示文档的结尾
            ** XmlPullParser.START_TAG --> 表示一个节点的开始
            ** XmlPullParser.END_TAG --> 表示一个节点的结束
            ** XmlPullParser.TEXT --> 表示开始节点和结束节点之间的文本
        int parser.getEventType():返回当前的事件类型
    
    * 循环判断当前的事件类型,只要事件类型不等于END_DOCUMENT,就表示没有解析到文档的结尾,循环处理操作
        循环中先判断事件类型是开始节点事件类型还是结束节点事件类型,根据不同对的事件类型做不同的操作。
        操作中常用到的方法:
            parser.getName():返回当前指针所处的节点名称,也就是标签名;
            parser.nextText():取出当前指针所处节点中的文本内容(开始标签和结束标签之间的内容)
            parser.getText():该方法配合常量TEXT一起使用,只有当事件类型为TEXT时,才可使用getText()方法取出
                当前指针所指的文本,取出的值与nextText()取出的相同。
            parser.getAttributeValue(int index):返回当前指针所指的节点的给定索引的属性值
                > index:节点中属性的索引,索引从0开始
            ......
    
    * 每循环一次,重新获取当前的事件类型,再次判断是否循环:
        eventType = parser.next();
    * 当eventType == END_DOCUMENT,xml文档解析结束。

时间: 2024-12-07 13:09:10

笔记 - Android - 5.数据存储和访问、XML等的相关文章

在android开发中进行数据存储与访问的多种方式介绍_Android

数据存储与访问 很多时候我们的软件需要对处理后的数据进行存储或再次访问.Android为数据存储提供了多种方式,分别有如下几种: 文件 SharedPreferences SQLite数据库 内容提供者(Content provider) 网络 使用文件进行数据存储 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 复制代码 代码如下: public clas

Android本地数据存储: ASimpleCache

一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Reservoir和ASimpleCache有啥不同,而是直接选取了Reservoir来进行学习使用,今天休息,真好看下ASimpleCache是如何使用的,有啥特别之处. come on with me,let's study together. 二:认知ASimpleCache ASimpleCac

我的Android进阶之旅------&amp;gt;Android实现数据存储技术

本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置

Android简易数据存储之SharedPreferences

Andorid提供了多种数据存储的方式,例如前面说到的"Android数据存储之SQLite的操作"是用于较复杂的数据存储.然而,如果有些简单的数据存储如果采用SQLite的方式的话会显得比较笨重.例如:记录用户是否访问过APP的欢迎页面之类的数据,如果采用SQLite的话会显得没必要而且费时费力.因此Andorid提供了另一种存储简单数据的方式SharedPreferences.SharedPreferences是一个轻量级的数据存储方式,其仅支持boolean.int.long.f

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应⽤必须待在⾃己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应⽤沙盒的文件系

Android本地数据存储: Reservoir

一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用这个...后来转念一想,有没有啥开源的轻量级的库,可以更好的帮我完成这件事呢,于是求助了度娘,果不其然,被我找到了两个库,Reservoir和ASimpleCache. 原谅我没有过多的去比较这两个库,直接采用了Reservoir,去实现本地数据存储. 啥是Reservoir呢? 官方说,Reser

Android之数据存储----使用LoaderManager异步加载数据库

一.各种概念: 1.Loaders: 适用于Android3.0以及更高的版本,它提供了一套在UI的主线程中异步加载数据的框架.使用Loaders可以非常简单的在Activity或者Fragment中异步加载数据,一般适用于大量的数据查询,或者需要经常修改并及时展示的数据显示到UI上,这样可以避免查询数据的时候,造成UI主线程的卡顿. 即使是查询SQLite数据库,用Loaders来操作会更加的简便. Loaders有以下特点: 可以适用于Activity和Fragment. 可以提供异步的方式

android之数据存储之SQLite

          SQLite开源轻量级数据库,支持92-SQL标准,主要用于嵌入式系统,只占几百K系统资源此外,SQLite 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能. 有五种常用数据类型: NULL:空值 INTEGER:整形 REAL:浮点型 VARCHAR:字符型 BLOB:大数据 注意

5种Android数据存储方式汇总_Android

本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种:使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比