//
// FileUtil.h
// OC基础学习
//
// Created by 麦子 on 15/5/26.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface FileUtil : NSObject
+(BOOL) saveData;
+(id)getData;
+(bool)saveDataByKind;
+(id)getDataByKind;
@end
//
// FileUtil.m
// OC基础学习
//
// Created by 麦子 on 15/5/26.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import "FileUtil.h"
/***其实就是数据的序列化,和反序列化*/
@implementation FileUtil
/**保存数据,加密数据--------------单独类型数据处理*/
+(BOOL) saveData{
NSArray *array = [NSArray arrayWithObjects:@"110",@"221",@"332", nil];
NSString *homePath = NSHomeDirectory();
NSLog(@"---path---%@",homePath);
NSString *path = [homePath stringByAppendingPathComponent:@"NBA.com"];
BOOL flag = [NSKeyedArchiver archiveRootObject:array toFile:path];
return flag;
};
/**获取数据,解密数据---------单独类型数据处理****/
+(id)getData{
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"NBA.com"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"array--->%@",array);
return array;
};
/**多种数据放到一个文件中,以Key, val的格式来进行保存*/
+(bool)saveDataByKind{
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"abc.txt"];
NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeInt:100 forKey:@"age"];
NSArray *array = [NSArray arrayWithObjects: @"1",@"2",@"3", nil];
[archiver encodeObject:array forKey:@"array"];
[archiver finishEncoding]; // 数据全部打入到Data中
bool flag = [data writeToFile:path atomically:YES];
if (flag) {
NSLog(@"写入成功");
}
return flag;
}
/**获取多种种数据,以Key, val的格式来进行获取*/
+(id)getDataByKind{
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"abc.txt"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSInteger age = [unArchiver decodeIntegerForKey:@"age"];
long ageCount = age;
NSArray *array = [unArchiver decodeObjectForKey:@"array"];
NSLog(@"age-->%ld,array--->%@",ageCount,array);
return array;
}
@end
自定义对象归档
//
// Ball.h
// OC基础学习
//
// Created by 麦子 on 15/5/26.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Ball : NSObject<NSCoding>
@property(nonatomic,copy) NSString *brandName;
@property(nonatomic,copy) NSString *address;
+(BOOL) saveData:(Ball *) ball;
+(BOOL) getData;
@end
//
// Ball.m
// OC基础学习
//
// Created by 麦子 on 15/5/26.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import "Ball.h"
/**实现NSCoding方法,重写加密和解密方法,这个只是写入数据到磁盘中。*/
@implementation Ball
#define BRANDNME @"brandName"
#define ADDRESS @"address"
/***加密*/
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:_brandName forKey:BRANDNME];
[aCoder encodeObject:_address forKey:ADDRESS];
}
/**解密*/
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self != nil) {
self.brandName = [aDecoder decodeObjectForKey:BRANDNME];
self.address = [aDecoder decodeObjectForKey:ADDRESS]; // 这里是copy的形式设置的,所以需要释放内存
}
return self;
}
+(BOOL) saveData:(Ball *) ball {
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"test.look"];
BOOL flag = [NSKeyedArchiver archiveRootObject:ball toFile:path];
if (flag) {
NSLog(@"加密成功");
}
return flag;
}
+(BOOL) getData{
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"test.look"];
Ball *ball = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",ball);
if (ball != nil) {
NSLog(@"解密成功");
return true;
}
return false;
}
/**这个相当于toString的方法*/
-(NSString *)description{
NSString *str = [NSString stringWithFormat:@"brandName-%@,address-%@", _brandName,_address];
return str;
}
-(void)dealloc{
[_brandName release];
[_address release];
[super dealloc];
}
@end
运行结果如下:
2015-05-26 23:34:24.118 OC基础学习[1210:61858] ---path---/Users/maizi
2015-05-26 23:34:24.119 OC基础学习[1210:61858] array--->(
110,
221,
332
)
2015-05-26 23:34:24.120 OC基础学习[1210:61858] 写入成功
2015-05-26 23:34:24.120 OC基础学习[1210:61858] age-->100,array--->(
1,
2,
3
)
2015-05-26 23:34:24.121 OC基础学习[1210:61858] 加密成功
2015-05-26 23:34:24.121 OC基础学习[1210:61858] brandName-耐克,address-NBA
2015-05-26 23:34:24.121 OC基础学习[1210:61858] 解密成功
Program ended with exit code: 0