沙盒机制 归档 反归档

//文件路径

//1.Home主目录:里面有Document, library,tem,和一个应用程序

NSLog(@"%@",NSHomeDirectory());

//2.Document路径

NSString *docuPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSLog(@"%@",docuPath);

//3.Library路径

NSString *libPath=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES)[0];

NSLog(@"%@",libPath);

//4.Temp路径

NSLog(@"%@",NSTemporaryDirectory());

//5.caches路径

NSString *caches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];

NSLog(@"%@",caches);

//6.user路径

NSString *user=NSUserName();

NSLog(@"%@",user);

//7.NSBundle路径路径

NSString *bundle=[[NSBundle mainBundle]pathForResource:@"6" ofType:@"png"];

NSLog(@"%@",bundle);

//简单文件写入

//NSString写入

//1.写入的路径

NSString *s=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSLog(@"%@",s);

//2.拼接文件路径

NSString *filePath=[s stringByAppendingString:@"/myText.txt"];

//3.准备写入的内容

NSString *content=@"hello,world";

//4.写入

[content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

//5.文件读取

NSString *readString=[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

NSLog(@"%@",readString);

//NSArray

//1.获取document路径

NSString *s1=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

//2.拼接文件路径

NSString *arrFile=[s1 stringByAppendingString:@"/array.plist"];

//3.准备内容

NSArray *array=@[@"123",@"456",@"678"];

//4.写入

[array writeToFile:arrFile atomically:YES];

//5.读取文件

NSArray *arr=[NSArray arrayWithContentsOfFile:arrFile];

NSLog(@"%@",arr);

//NSDictionary

//1.获取写入路径

NSString *s2=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

//2.拼接文件路径

NSString *dicFile=[s2 stringByAppendingString:@"/dictionary.plist"];

//3.准备内容

NSDictionary *dic=@{@"1":@"a",@"2":@"b",@"3":@"c"};

//4.写入

[dic writeToFile:dicFile atomically:YES];

//5.读取数据

NSDictionary *d=[NSDictionary dictionaryWithContentsOfFile:dicFile];

NSLog(@"%@",d);

***********************************

NSString *documentPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSString *path=[documentPath stringByAppendingString:@"/Person7"];

//创建文件

[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];

NSLog(@"%@",path);

//修改文件

NSString *stu=[documentPath stringByAppendingString:@"/student"];

[[NSFileManager defaultManager] moveItemAtPath:path toPath:stu error:nil];

//删除文件

[[NSFileManager defaultManager] removeItemAtPath:stu error:nil];

*********************************************

归档

1.先在要归档的类里(如Person类.h中)遵循coding协议

2.在(person.m中)遵循协议方法(一个归档,一个反归档)

#define kname @"name"

#define kage @"age"

@implementation Person

//进行归档编码时候码调用(系统调用)

-(void)encodeWithCoder:(NSCoder *)aCoder

{

//对属性进行编码

[aCoder encodeObject:self.name forKey:kname];

[aCoder encodeObject:self.age forKey:kage];

}

//反归档

-(id)initWithCoder:(NSCoder *)aDecoder

{

self=[super init];

//反编码

if (self) {

self.name=[aDecoder decodeObjectForKey:kname];

self.age=[aDecoder decodeObjectForKey:kage];

}

return self;

}

3.实现归档反归档

*******归档方法一*******

//创建Person类的实例对象

Person *person1=[[Person alloc] init];

[email protected]"张三";

[email protected]"39";

Person *person2=[[Person alloc] init];

[email protected]"李四";

[email protected]"18";

//归档使用的NSData

NSMutableData *person1Data=[NSMutableData data];

//创建归档工具

NSKeyedArchiver *achiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:person1Data];

//进行归档

[achiver encodeObject:person1 forKey:kPerson1];

[achiver encodeObject:person2 forKey:kPerson2];

//完成转换,结束归档

[achiver finishEncoding];

//获取Document

NSString *person1Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

//拼接路径

NSString *pPath=[person1Path stringByAppendingString:@"/Person"];

//写入

[person1Data writeToFile:pPath atomically:YES];

NSLog(@"%@",person1Path);

//反归档

//通过文件路径获取data数据

NSData *unData=[NSData dataWithContentsOfFile:pPath];

//反归档工具

NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:unData];

//反归档

Person *p=[unArchiver decodeObjectForKey:kPerson1];

Person *p2=[unArchiver decodeObjectForKey:kPerson2];

//结束反归档

[unArchiver finishDecoding];

NSLog(@"name:%@",p.name);

NSLog(@"%@",p2.name);

*************************************

****归档方法二***********

//获取 documen路径

NSString *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSString *filepath=[path stringByAppendingString:@"/personArray.plist"];

Person *pn1=[[Person alloc] init];

pn1.name=@"1";

pn1.age=@"2";

Person *pn2=[[Person alloc] init];

pn2.name=@"3";

pn2.age=@"4";

NSArray *a=@[pn1,pn2];

//归档

[NSKeyedArchiver archiveRootObject:a toFile:filepath];

//反归档

NSArray *arr=  [NSKeyedUnarchiver unarchiveObjectWithFile:filepath];

NSLog(@"%@",[arr[0] name]);

时间: 2024-08-26 19:06:48

沙盒机制 归档 反归档的相关文章

【学习ios之路:UI系列】iOS沙盒机制,文件读取,归档与反归档

1.IOS中的沙盒机制 IOS中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 特点: 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.如下图

归档反归档 - 本地沙盒存储复杂对象

NSString,NSNumber,NSArray,NSDictionary等简单对象可以方便的存储在本地沙盒文件中,而复杂的对象,诸如属性.方法较多的类对象,就需要使用归档反归档方法(序列化与反序列化),以NSData方式进行存储. 归档反归档,主要的操作顺序是:编码(enCoding) -> 归档(archiver) -> 解码(deCoding) -> 反归档(unarchiver) 1.编码与解码的方法,需要在类的声明文件中接受<NSCoding>协议,在实现文件.m

数据本地化之沙盒机制

1.什么是沙盒机制(SandBox)?每个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒. 注意:1.每一个应用程序都会拥有一个应用程序沙盒. 2.每一个程序沙盒就是一个文件系统目录. 2.沙盒的特点 3.沙盒的文件夹及各个文件夹的作用 4.简单数据类型写入本地(字符串,数组,字典,NSData类型的数据存储在本地) #pragma mark - 简单对象的本地持久化    #pragma mark - 将NSString类型的数据存储到本地   

IOS 初级数据持久化-沙盒机制

什么是数据持久化?数据的永久存储 为什么要坐数据持久化:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据初九化的本质:数据保存成文件,存储到程序的沙河中 1.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在IOS系统内都放在了统一的文件夹目录下 沙盒的本质就是一个文件夹,名字是随机分配的. 2.沙盒路径的位置 1.通过Finder查找程序沙盒相对的路径 通过代码查找程序沙盒相对路径 NSString *D

iOS沙盒机制介绍

一.沙盒机制 沙盒的概念:沙盒是每一个iOS应用程序都会自动创建的一个文件系统目录(文件夹),而且沙盒还具有独立.封闭.安全的特点. 沙盒机制 iOS中的沙盒不仅仅是一个文件目录,TA其实更是一种安全体系 TA规定了应用程序只能在为该应用程序创建的文件夹(也就是沙盒)内访问文件,不可以访问其他沙盒内的内容(iOS已经部分开放访问) 所有的非代码文件都保存在沙盒中,图片.音频.视频.属性列表(plist).sqlite数据库以及文本文件等. 沙盒机制的特点 每个应用程序的活动范围都限定在自己的沙盒

IOS 阶段学习第25天笔记(IOS沙盒机制介绍)

IOS学习(OC语言)知识点整理 一.IOS沙盒机制介绍 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访问(extension) 2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制 3)应用沙盒一般包括以下几个文件目录: 1.应用程序包:包含所有资源文件和可执行文件 2.Documents:保存应用

iOS之沙盒机制

今天有讲到数据持久化的问题,就有涉及到数据存储位置的问题.iOS对于数据安全问题做的很严谨,使用的沙盒机制(Sandbox),相对于安卓系统而言,一下子真的是难以消化. 在iOS8之前的沙盒文件夹中存在四个文件夹 Document  存储用户数据,需要备份的信息(数据持久化操作的文件夹) Library Library/Caches  存储缓存文件,程序专用的支持文件 Library/Preferences  存储应用程序的偏好设置文件 .app   程序包(iOS8时,app不存储在沙盒中,有

IOS-沙盒机制(一 简述)

一 IOS沙盒机制 出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上.当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒.所以的文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等.(For security reasons, iOS places each app (including its preferences and data) in a sandbox at install time. A sandbox is a

IOS-沙盒机制(二 文件读写)

一 目录说明 如下图所示,一个沙盒中典型存在下面的目录和文件 各个目录及文件说明: 1.Documents      您应该将所有的应用程序数据文件写入到这个目录下,这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app   这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动. 3.Library              这个目录下有两个子目录:Caches 和 Prefer