iOS数据持久化之存储路径

原文:https://www.jianshu.com/p/a9c64b15df85

一、沙盒和沙盒存储路径

1、沙盒是什么?

iOS 每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录 。所有的非代码文件都要保存在此。沙盒就是一种独立、安全、封闭的空间 ,不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容。

沙盒的四个目录:Documents、Library/Preferences 、Library/Caches 、tmp

Documents:保存用户产生的数据;

Library/Preferences: 保存偏好设置 如:NSUserDefaults

Library/Caches: 缓存数据 如 SDWebImage 中的图片

tmp: 临时数据 程序退出会删除目录

2、获取沙盒路径方法

2.0、获取沙盒的根目录

NSString *homePath = NSHomeDirectory();

2.1 获取沙盒路径下Documents 目录

方法1:拼接

NSString *homeDocumentPath = NSHomeDirectory();
NSString *documents = [homeDocumentPath stringByAppendingPathComponent:@"Documents"];

注:stringByAppendingPathComponent 和 stringByAppendingString 的取别

stringByAppendingPathComponent 是路径拼接 会在字符串前添加 “/”

stringByAppendingString 拼接字符串 没有 “/”

方法2: 搜索

NSArray *paths =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents1 = [paths lastObject];

注: 通过搜索获得数组(paths )中只有一条数据 所以 不论是取最后一条还是第一条都是正确的

方法3: NSFileManager

NSURL*documents2 = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];  
//url 转字符串
NSString*documentsPath2 = documents2.absoluteString;
NSLog(@"路径是:%@",documentsPath2);

2.2、获取沙盒路径下 Library/Caches 目录

和上面 方法相同,参数不同

方法1:拼接

NSString *homePath = NSHomeDirectory();
NSString *cachePath = [homePath stringByAppendingPathComponent:@"Library/Caches"];

方法2:

NSArray *cpaths =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath1 = [cpaths lastObject];

方法3:

NSURL*cacheUrl = [[[NSFileManager defaultManager] URLsForDirectory: NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
NSString*cachePath2 = cacheUrl.absoluteString;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值