Document:保存”应用程序本身“产生的文件或数据,注意:不要保存从网络上下载的文件,否则无法上架。(该文件夹是开发者自己管理的文件目录,操作性大,常用来作数据持久化)
Caches:保存临时文件,”后续需要使用“,一般存储体积大并且不需要备份的数据,例如:图片、视频等等,但是Caches不具备自动清除功能,所以开发中需要提供实现自动/手动清空的功能。(做性能优化缓存数据的时候,大都是把输出存储在这里的)
Preference:保存应用的所有用户编好设置,使用NSUserDefault直接读写
Tmp:保存临时文件,”后续不需要用的“,tmp目录中文件,系统会不定期的清除,如重启手机、系统磁盘内存不足等等
注意:根据苹果官方文档说明,在App版本更新,只是更新.app文件,而Library和Document文件会保留,两种的区别是Document会备份,所以一些不太重要的文件就不要放在Document中,避免备份的体积大,浪费资源。
根据大连老毕博客判断,App升级的机制是,先安装新版本的软件,然后再将旧版本的中的Document和Libraray文件copy过去并替换,最后将旧版本删除。
//获取根目录
NSString *path = NSHomeDirectory();
NSLog(@"%@===",path);
//获取Documents目录
/*NSDocumentDirectory获取Document目录、NSUserDomainMask在当前沙盒范围内查找、YES展开路径*/
NSString *filePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *docunment = [filePath stringByAppendingPathComponent:@"test.txt"];
//获取Library目录
filePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *library = [filePath stringByAppendingPathComponent:@"test.txt"];
//获取library/craches文件目录
filePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
NSString *caches = [filePath stringByAppendingPathComponent:@"test.txt"];
//获取Preferences目录
/*preferences是由系统维护,不需要我们手动获取文件路径进行操作,直接通过NSUserdefault操作*/
filePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *preferences = [filePath stringByAppendingPathComponent:@"/Preferences"];
//获取tmp文件路径
NSString *tmp = NSTemporaryDirectory();