数据持久化基础知识——应用的沙盒

1、要素:应用的/Documents文件夹
每个应用都有自己的/Documents文件夹,且仅能读写各自/Documents目录中的内容。
2、每个应用程序沙盒都应包含以下三个目录:

  • Documents:数据存储(应用程序启用iTunes文件分享功能,则用户可以在iTunes中看到目录的内容,以及应用程序创建的所有子目录,还可以对其更新文件。)
  • Library:数据存储(存放不想分享给用户的文件,需要时可创建自己的子目录)
  • tmp:供应存储临时文件,当iOS设备执行同步时,iTunes不会备份tmp中的文件,在不需要这些文件时,应用负责删除tmp中的文件,以免占用文件系统的空间。

3、获取Documents目录
#
用C函数NSSearchPathForDirectoriesInDomain()来查找各种目录。它的很多选项都是专门为OS X设计的,在iOS上不会返回任何值,原因是iOS上并不存在这些位置(如Documents文件夹)或应用因为iOS的沙盒机制而没有访问位置的权限。

 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory=paths[0];
//常量NSDocumentDirectory表明我们正在查找Documents目录的路径
//常量NSUserDomainMask表明我们希望将搜索限制在应用的沙盒内。在OS X中,此常量表示我们我们希望该函数查看用户的主目录。虽然返回的是一个匹配路径的数组,但我们知道数组中位于索引0处的一定是Documents目录(因为每个应用中只有一个Documents目录,只有一个目录符合指定的条件)

#
可以在检索到的路径结尾附加另一个字符串来创建文件名,要使用方法NSString(即stringByAppendingPathComponent方法)

 NSString *filename=[documentsDirectory stringByAppendingPathComponent:@"theFile.txt"];
 //完成此调用后,filename就包含了指向应用Documents目录中的theFile.txt文件的完整路径,可以使用filename来创建、读取和写入文件了。

#
可以在同样的C函数中将NSSearchPathDirectory.NSLibraryDirectory作为第一个参数来获取Library目录的位置。

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory=paths[0];

4、获取tmp目录

NSString *tempPath=NSTemporaryDirectory();//找到该临时文件

NSString *tempFile=[tempPath stringByAppendingPathComponent:@"tempFile.txt"];//在路径结尾处符文件名,就可以创建指向该目录下文件的路径。
//名为NSTemporaryDirectory()的Foundation函数将返回一个字符串,该字符串包含到临时目录的完整路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值