首页 > 代码库 > 归档和解档
归档和解档
对于系统定义不可变的类型的对象,复制时不会产生新的对象【ns numb string array dictionary】r只写r+xie读w只读w+清理完在写a追加a+数据持久化NSUserDefaults 只能存系统定义的类型,不能存太多或是大数据,可用于系统偏好设置;plist不能存自定义的数据NSKeyedArchiverSQLite数据库Core DataXML、JSON简单易于传输//c语言的文件操作 FILE *fp = fopen("/Users/apple/Desktop/test.txt", "r+"); if (fp == NULL) { return -1; } char a[10] = {0}; size_t res = fread(a, 1, 2, fp); if (res == 0) { printf("read failed\n"); } printf("%s\n", a); fpos_t pos; fgetpos(fp, &pos); printf("pos: %lld\n", pos); size_t result = fwrite("xyzwopq", 1, 6, fp); fgetpos(fp, &pos); printf("pos: %lld\n", pos); if (result == 0) { printf("write failed\n"); } else { printf("write success\n"); } res = fread(a, 1, 2, fp); if (res == 0) { printf("read failed\n"); } printf("%s\n", a); fgetpos(fp, &pos); printf("pos: %lld\n", pos); fclose(fp); //属性列表的方式,只能存系统定义的类型 NSArray *array1 = [NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/test.plist"]; NSLog(@"%@", array1); //1. 只能存系统定义的类型 //2. 不能存太多数据或者是大数据 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];//单(实)例类 [userDefault setInteger:2340 forKey:@"age"];// NSInteger age = [userDefault integerForKey:@"age"]; NSLog(@"%d", age); //二进制编码 NSString *str = @"123abc"; NSData *data =http://www.mamicode.com/ [str dataUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@", data); //从文件中读取数据 data = http://www.mamicode.com/[NSData dataWithContentsOfFile:@"/Users/apple/Desktop/a.out"]; NSLog(@"%@", data); NSMutableData *mData =http://www.mamicode.com/ [NSMutableData data]; [mData appendData:data]; [mData appendData:data]; //项文件中写数据 [mData writeToFile:@"/Users/apple/Desktop/b.out" atomically:YES]; NSURL *url = [NSURL URLWithString:@"http://sqlite.org/images/foreignlogos/nokia.gif"]; NSData *nokia = [NSData dataWithContentsOfURL:url]; [nokia writeToFile:@"/Users/apple/Desktop/nokia.gif" atomically:YES];//////不是系统的数据需要编码取归档,译码再解档//////@implementation Dog要实现NSCoding两个方法- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:_name forKey:kDogNameKey];}- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { self.name = [aDecoder decodeObjectForKey:kDogNameKey]; } return self;}@end、、、、、、、、、、、、、、、、、、、、、、/////////归档与解档 NSString *str = @"abc"; [NSKeyedArchiver archiveRootObject:str toFile:@"/Users/apple/Desktop/test.plist"]; NSString *str1 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/apple/Desktop/test.plist"]; NSLog(@"%@", str1); Student *stu = [[Student alloc] init]; stu.name = @"Zhangsan"; stu.age = 30; [NSKeyedArchiver archiveRootObject:stu toFile:@"/Users/apple/Desktop/student.plist"]; Student *stu1 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/apple/Desktop/student.plist"]; NSLog(@"%p, %p", stu, stu1); NSLog(@"%@:%d, %@:%d", stu.name, stu.age, stu1.name, stu1.age); NSData *stuData =http://www.mamicode.com/ [NSKeyedArchiver archivedDataWithRootObject:stu]; [stuData writeToFile:@"/Users/apple/Desktop/stu.plist" atomically:YES]; NSData *stuData2 = [NSData dataWithContentsOfFile:@"/Users/apple/Desktop/stu.plist"]; Student *stu3 = [NSKeyedUnarchiver unarchiveObjectWithData:stuData2]; NSLog(@"%@:%d---%@:%d", stu.name, stu.age, stu3.name, stu3.age); NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:stuData forKey:@"xxxx"]; NSData *stuData3 = [userDefault objectForKey:@"xxxx"]; Student *stu4 = [NSKeyedUnarchiver unarchiveObjectWithData:stuData3]; NSLog(@"%@:%d", stu4.name, stu4.age); stu4.dog = [[Dog alloc] init]; stu4.dog.name = @"小强"; [NSKeyedArchiver archiveRootObject:stu4 toFile:@"/Users/apple/Desktop/dog.plist”];、、、、、、、、、、、、、、、、、、、、、、、、、、iOS沙盒中一共有四个文件夹 • Documents/tmp/app/Library• 系统提供了获取这些目录的方法• NSHomeDirectory()• NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirecto ry, NSUserDomainMask, YES);• NSString *docDirectory = [paths objectAtIndex: 0];• NSTemporaryDirectory()• 获取当前程序中资源文件路径• NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”image” ofType: @”png”]; 、、、、、、、沙盒机制、、、、、、、、 NSString *home = NSHomeDirectory(); NSLog(@"%@", home); NSString *doc = [home stringByAppendingPathComponent:@"Documents"]; NSLog(@"%@", doc); //2. NSArray *array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSLog(@"%@", array); NSString *doc2 = [array firstObject]; NSLog(@"%@", doc2); //3. tmp NSString *tmp = NSTemporaryDirectory(); NSLog(@"%@", tmp); NSString *name = @"戴维营教育"; NSString *path = [doc stringByAppendingPathComponent:@"test.plist"]; [name writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil]; //4. NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"testDB" ofType:@"db"]; NSLog(@"%@", dbPath);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。