1.如何创建文件夹 管理文件夹 需要使用 NSFileManager 这个单例类
// withIntermediateDirectories 如果填YES,如果创建的文件已经存在,可以将其覆盖,反之文件创建失败
BOOL isCreated = [[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:YES attributes:nil error:nil];
移动文件夹的方法, 参数是两个路径 ,将就路径中的文件夹移到新路径中
BOOL isMoved = [[NSFileManager defaultManager] moveItemAtPath:oldPath toPath:newPath error:nil];
复制文件夹
BOOL isCopy = [[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:nil];
删除文件夹
BOOL isDelete = [[NSFileManager defaultManager] removeItemAtPath:newPath error:nil];
判断文件夹是否存在
BOOL isExist = [[NSFileManager defaultManager] isExecutableFileAtPath:oldPath];
复杂对象初始化需要遵守一个协议 <NSCoding>
然后实现协议中的方法
// 对复杂对象进行持久化 叫做归档与反归档(编码与解码)
// 反归档方法
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
// 解码的过程
// 注意编码时的Key要和解码的Key一样
self.name = [aDecoder decodeObjectForKey:@"name"];
self.age = [aDecoder decodeIntegerForKey:@"age"];
self.data = [aDecoder decodeObjectForKey:@"data"];
}
return self;
}
// 归档方法 编码成可以持久化的格式
- (void)encodeWithCoder:(NSCoder *)aCoder
{
// 对每一个属性 都进行重新编码
// 注意属性类型
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeInteger:self.age forKey:@"age"];
[aCoder encodeObject:self.data forKey:@"data"];
}
// 归档复杂对象
- (void)archiver
{
// 归档前要初始化对象
JJModel *model = [[JJModel alloc] init];
// 赋值
model.name = @"JJ";
model.age = 23;
// 弄一张图片给图片
model.data = UIImagePNGRepresentation([UIImage imageNamed:@"河图"]);
// 创建一个归档对象
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
// 进行编码归档
[archiver encodeObject:model forKey:@"JJModel"];
// 编码完成
[archiver finishEncoding];
// NSLog(@"%@", data);
// 实际上把编码完的对象保存到data中
// 把data 写入文件, 就算完成了持久化
// 写好路径, 调写入方法
NSString *oldPath = [NSString stringWithFormat:@"%@/JJModel.da", kDocumentPath];
[data writeToFile:oldPath atomically:YES];
[model release];
[archiver release];
}
// 反归档(解码)
- (void)unArchiver
{
NSString *oldPath = [NSString stringWithFormat:@"%@/JJModel.da", kDocumentPath];
// 获取刚才归档的data
NSData *data = [NSData dataWithContentsOfFile:oldPath];
NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
// 进行解码 返回一个对象 key 一定要和 编码时的key 一样
JJModel *model = [unArchiver decodeObjectForKey:@"JJModel"];
// 反归档完成
[unArchiver finishDecoding];
[unArchiver release];
// UIImage *image = [UIImage imageWithData:model.data];
NSLog(@"%@", model);
}