码迷,mamicode.com
首页 > 其他好文 > 详细

数据处理文件读取---预习 1.30

时间:2016-01-30 18:01:13      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

一、沙盒机制

沙盒就是一个单独的,封闭的空间(好像后来不封闭,外面的应用程序也可以访问了),每一个应用程序都有一个这样的沙盒,用来存储相应的东西(东西:所有的非代码的东西,如图片,声音,属性列表,数据库,文本文件)(应用程序的沙盒,就是应用程序的目录)

 每一个沙盒地下都有三个文件 Documents-文档 Library(Caches,PreFerences) tmp-临时文件

Document应用程序持久化的文件都是存储在这个文件夹下的

Library/Caches 存放缓存文件 存放体积大,不太重要文件,iTunes不会存储此文件下的内容   

Library/Preferences 保存偏好设置 (不应该直接创建好设置文件)而是使用NSUserDefaults类来获得和设置应用程序的偏好(应该意思是不设置偏好,而是建立一个可以设置偏好的东西,然后让用户去设置偏好什么的)

tmp 存放零时文件,iTunes不会同步该目录,iPhone重启时(重启时会丢弃所以的tmp文件,但是当应用程序关闭时有可能会删除该应该程序下的tmp文件,该目录下的文件会被删除

 

获取文件的目录

方法:

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory(这里的参数换成其他类型的就可以获得其他类型的文件目录了), NSUserDomainMask, YES)[0]

 

tmp的文件目录获取有所不同

NSString *path = NSTemporaryDirctory();

二、简单对象的写入与读出

1、简单对象的读取和录入

字符串数据 

[NSString stringWithContentsOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError * _Nullable __autoreleasing * _Nullable)#>]

读取类型开头+ withContectOfFile:<#(nonnull NSString *)#> encoding:<#(NSStringEncoding)#>

写入 writeToFile:atomically:encoding:error:

不研究NSdata

 

三、文件管理器

文件管理器NSFileManager(用实例说明)把文件的位置对换,还有很多方法,慢慢看

NSString *documentpath = [self getDocument];

    NSString *pathForText = [documentpath stringByAppendingString:@"/path"];

    NSString *contentPathForText = [pathForText stringByAppendingString:@"/text.tet"];

    NSString *imageName = @"boxer_dog_72px_1165292_easyicon.net-2";

    [imageName writeToFile:contentPathForText atomically:YES encoding:NSUTF8StringEncoding error:nil];

    

    NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

    NSString *cachesPath = [cachesPaths objectAtIndex:0];

    NSString *textDicPath = [cachesPath stringByAppendingString:@"/textDirectroy"];

    

    NSFileManager *fileManager = [NSFileManager defaultManager];

    [fileManager moveItemAtPath:contentPathForText toPath:textDicPath error:nil];

 

文件对接器NSFileHandle

这个类必须使用NSFileManager方法来创建文件,因此在使用是必须保证文件以及存在,否则返回的都是nil

四、复杂对象的对象与读取

对于自己定义的复杂的类,我们无法通过简单的writeTOFile:进行数据的持久化,只能通过归档然后再通过writeToFile写入文件

 

 

归档 

首先,复杂对象所属的类要遵守<NSCoding>协议,然后实现协议中的两个方法

- (void)encodeWithCoder:(NSCoder *)aCoder ;序列化

-(void)initWithCoder:(NSCoder *)aDecoder;反序列化

   //创建一个NSMutableData,用于保存归档后的对象

    NSMutableData *data = [NSMutableData data];

    //创建一个归档公工具

    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

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

    person.age = @"19";

    person.name = @"kyrie";

//    存入归档

    [archiver encodeObject:person forKey:@"p1"];

//    结束归档

    [archiver finishEncoding];

    

//    沙盒路径

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

    NSString *PersonPath = [path stringByAppendingPathComponent:@"person"];

    

    [data writeToFile:PersonPath atomically:YES];

    

    //返归档

    NSData *getdata = [NSData dataWithContentsOfFile:PersonPath];

    

//反归档工具

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

    Person *person2 = [unArchiver decodeObjectForKey:@"p1"];

    [unArchiver finishDecoding];

    

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

 

数据处理文件读取---预习 1.30

标签:

原文地址:http://www.cnblogs.com/naizui/p/5170803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!