IOS之沙盒路径,文件操作,XML解析

来源:互联网 发布:一战是怎么回事知乎 编辑:程序博客网 时间:2024/04/30 09:23

1.Model 模型层

         1.1 干什么

                   将数据存储到硬盘上,将硬盘上的数据读取回内存。(文件)

                   硬盘<——>内存数据 + 业务处理

                   内存数据->硬盘 写

                   硬盘->内存数据 读

         1.2 宏观位置 MVC

                   数据处理部分功能

         1.3 难点

                   (1)存储方式多样化,而且每种办法都相似。

                   (2)看不见,摸不着。

二、文件处理

         1.基本使用

                   (1)NSString 表示文件路径

                   (2)NSFileManager 对文件基本操作

                                      (创建、删除、改名、探测)

                   (3)NSFileHandle 对文件进行读写操作

                                      (文件的对接器)

                   (4)NSData 表示数据

         2.NSString 路径

                   描述文件在硬盘上的位置。

         3.NSFileManager

                   用来管理文件的基本操作。

         4.沙盒机制 sandbox

                   每个ios应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它系统(App)隔离。应用必须待在自己的沙盒里,其它应用也不能访问该沙盒。                  

                   Layer… 所有的资源文件和可执行文件

                   Documents 保存运行时需要持久化的数据

                                      ITunes 可以备份该目录的数据

                                      体积小,需要备份的内容,例如游戏的存档

                   Library Caches  保存应用运行时需要生的持久化数据

                                      ITunes 不会备份,一般存体积大、不需要备份的重要数据。

                   Perferences 保存应用程序所有的偏好设置信息,IOS的setting(设置),应用会在该目录查找应用的设置信息,ITunes同步设置时会备份该目录。

                   tmp 保存程序运行时,需要的临时处理的数据,使用完毕后再将相应的文件从该目录删除,如果当前程序没有在运行状态,系统会自动删除该目录的文件。ITunes不会备份该目录。

                   通常情况下,Preference由系统维护,所以我们经常只会操作Documents。

         5.得到相应的操作目录

                   a.得到沙盒路径

                   b.得到Documents路径

                   c.得到Cache路径

                   d.得到tmp路径

         6.NSString 写、读文件能力

                   writeToFile… 写

                   stringWithContentOfFile… 读                 

1.创建文件时,有不同的数据格式

         NSString 字符串

         NSData 字节

                   保存文件,网络传输…

2.保存文件时有不同的格式

         直接:

                   NSString -> 文件 写

                   文件 -> NSString 读

         中转:

                   NSString -> NSData -> 文件 写

                   文件 -> NSData -> NSString 读

3.补充VC跳转 手动跳转

         (1)连接segue,VC与VC间的连接。

         (2)自己连接事件方法

         (3)事件方法 调用方法 手动的通知segue进行跳转

                   注:参数1为Segue的标识

                   [self performSegueWithIdentifier:@"VC2VC" sender:self];

4.读写对象信息

         (1)单一对象信息

                   对象->NSString->文件(人工拼接)

                   文件<-NSString<-对象(人工解析)

         (2)复杂对象信息(多对象)

5.系统提供类

         NSArray、NSString、NSDictionary、NSData、NSNumber、NDDate都提供了相应的文件读写功能。默认情况,系统的类可以直接保存信息在文件中。

*注:以上对象,包括对象中的信息也必须系统提供的。

         使用XML方式将文件保存起来的,这种方式最大的好处,就是信息具有结构化。


6.图片、图像文件处理

         在IOS开发中,图片处理有三种方式:

                   方式1:[UIImage imageNamed:@""];

                   方式2:文件->NSData->UIImage

                   方式3:文件->UIImage imageWithContent…

         NSBundle是一个目录,其中包含了程序会使用到的资源,这些资源包括图象、声音…文件…,nib文件。

得到当前App所有的资源路径。

7.文件复制

         使用步骤:

                   1.读取源文件的信息

                   2.将源文件的信息保存到NSData对象中

                            NSData *data =[NSData dataWithContentsOfFile:filePath];

                   3.通过NSData对象,将信息保存到新文件中

                            [data write…]

1.文件路径

         (1)资源路径 源代码/源代码中用到图片等相应资源 NSBundle

                   .layer -> *.app 不能修改里面的内容(只读),如果修改会导致程序无法继续使用。(pp助手)

         (2)用户信息 用来保存用户在使用程序过程当中需要长期保存的数据。

                   Documents/… 添加、修改、删除、查看…

2.NSFileHandle文件的对接器

         2.1 是什么

                   NSData -> NSFileHandle-> 文件

                   是基础操作,把内布中的Data对象,通过连接器一个字节一个字节的传到文件中

         2.2 使用步骤

                   1)前期准备

                   2)文件对接

                   3)读写操作

                   4)关闭对接

         2.3 干什么

                   局部修改、追加内容。

         2.4 文件指针

                   (1)data writeToFile

                            内部也使用NSFileHandle实现                 

  (2)任何文件对接器在对接文件的时候,文件指针都是重新读取文件的开始位置,每次都会覆盖上一次的内容。

                   (3)任何的读写操作都是从当前文件指针位置开始的。

                            [outputHandleseekToEndOfFile]移动到最后

                   (4)只要不关掉输出对接器,就可以继续向文件中添加内容。

 

3.XML

         3.1 是什么

                   Extensible Markup Language,可扩展标记语言,是一种用于电子文件,使其更具有结构性的标记语言。

         3.2 用在哪

                   配置文件、网络数据传输。。。

         3.3 为什么

                   统一文件存储标准,XML的简单使其易于在任何应用中使用。程序中读写数据,这使XML很快成为数据交换的唯一公共语言。

         3.4 语法

                   文档声明:<?xml version="1.0"?>

                   元素(结点、标签):<a>值(文本)</a>

                   属性:定义在开始标签中的内容,称为属性。

                   注释:<!— 注释内容 —>

         3.5 转义符问题

                   (1)转义

                            <     &lt;

                      >    &gt;

                            '       &qpos;

                            "      &quot;

                            &    &amp;

                   (2)CDATA

                            如果文本中有大量需要转义的东西,就可以使用CDATA包含起来,里面的内容就不需要再转义

                   (3)验证(约束)

                            规范XML文件的标签,不可以随便进行修改和定义

                            DTD

                            Schema

         3.6xml解析

                   把一个XML文件中的信息,读出来。

                   (1)SAX 事件驱动 Event-Drived

                            一次只读一标签内容,一边读一边解析

                            优点:省内存,效率低。

                   例:NSXMLParser

                            委托协议:NSXMLParserDelegate

                                      开始元素 didStartElement

                                      找到值 foundCharacters

                                      结束元素 didEndElement

 

                   (2)DOM 树状模型 Tree-hierechy

                            一次读完所有标签内容,然后统一进行解析

                            优点:消耗内存,效率高。

                   例:TBXML第三方的开源类

                            (1)得到XML的文件路径

                            (2)读取文件中的内容并创建NSData对象

                            (3)得到相应的开源类的对象

                            (4)得到XML文件中的根元素

                                      可以查看根元素的名称

                                      可以查看根元素的属性

                            (5)得到相应的子元素

                                      可以查看子元素的名称

                                      可以查看子元素的属性

                                               (如果还有子元素)得到相应的子元素

                                                         可以查看子元素的名称

                                                         可以查看子元素的属性

                                                         可以查看子元素的值(文本)

                            (6)将读出来的数据封装成对象

                           

0 0
原创粉丝点击