ios - 文件保存路径的获取

  • "应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。
  • 获取方式:
NSString *path = [[NSBundle mainBundle] bundlePath];

  • Documents: iTunes会同步此文件夹中的内容,一般用来存储持久化的数据.

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
  • firstObject或者lastobject都可以,因为该目录下只有一个文件夹
  • Library/Caches: iTunes不会同步此文件夹,caches存储缓存的.library目录下另一个文件夹是 preference 偏好设置文件夹,通过获取偏好设置的单例,直接可以保存在偏好设置里面的.plist文件

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
//偏好设置的单例
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//直接调用方法就能保存入偏好设置里面
[userDefaults setObject:@"hello"forKey:@"hello"];
//保存完以后一定记得同步synchronize更新一下.
  • 临时文件夹tmp: iTunes不会同步此文件夹,里面存的是临时文件,随时可以被删除,一般不怎么用

NSString *path = NSTemporaryDirectory();

比较常用的归档保存

  • 比如要归档一个对象或者model模型,则要归档的对象要遵守 协议
  • 在.m文件中实现归档,解档的协议方法
//
// Person.m
// test
//
// Created by 裴波波 on 16/4/8.
// Copyright © 2016年 裴波波. All rights reserved.
// #import "Person.h" @implementation Person //归档
-(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.age forKey:@"age"];
[aCoder encodeObject:self.hight forKey:@"hight"];
} //解档
-(instancetype)initWithCoder:(NSCoder *)aDecoder{ if([super init]){
self.name = [aDecoder decodeObjectForKey:@"name"];
self.age = [aDecoder decodeObjectForKey:@"age"];
self.hight = [aDecoder decodeObjectForKey:@"hight"];
}
return self;
} @end
  • 上面是告诉编译器按照什么方式进行归档.
  • 如何调用HOW??

//获取要保存文件的路径.并创建对应的文件,文件的后缀,越复杂越好,因为别人拿到后不会发现里面有什么
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"peibobo.bobo"]; //第二步---归档----------------------per要归档的对象---filePath要归档到的文件
[NSKeyedArchiver archiveRootObject:per toFile:filePath];
  • 解档
//一样获取文件
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"peibobo.bobo"]; //调用方法
Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:file];

注意点:

* 要归档对象要遵守NSCoding协议,实现归档解档方法.

* 获取保存的文件,要保存文件的路径

* 调用两个方法一个进行归档,一个进行解档.

上一篇:linux下文件夹的创建、复制、剪切、重命名、清空和删除命令


下一篇:阿里的dubbo 到底是用来干嘛的?