首页 > 代码库 > 沙盒机制 归档 反归档

沙盒机制 归档 反归档

//文件路径

//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];

    person1.name=@"张三";

    person1.age=@"39";

    

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

    person2.name=@"李四";

    person2.age=@"18";

    

    

    //归档使用的NSData

    NSMutableData *person1Data=http://www.mamicode.com/[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=http://www.mamicode.com/[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]);

    

 

 

沙盒机制 归档 反归档