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;

 

    原文作者:念路
    原文地址: https://blog.csdn.net/Cheng____/article/details/121240073
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞