iOS数据持久化之存储路径

本文介绍了iOS应用的沙盒概念,包括其作为独立、安全的文件系统目录,以及Documents、Library/Preferences、Library/Caches、tmp等四个主要目录的用途。详细阐述了如何使用NSHomeDirectory()、NSSearchPathForDirectoriesInDomains和NSFileManager来获取沙盒中的Documents和Library/Caches目录路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: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;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值