IOS沙盒(SandBox)机制以及沙盒目录路径的获取

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。

(1)、应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒。

(2)、应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里。

(3)、苹果禁止任何读、写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。

(4)、应用程序向外请求或接收数据都需要经过权限认证。

应用沙盒目录:

Application Bundle:包含应用可执行文件和所有资源文件,只读。

Document/ 存放应用运行时生成的并且需要保存的数据。iTunes或iCloud同步设备时备份该目录。

Library/Caches/ 存放应用运行时生成的并且需要保存的数据。iTunes或iCloud不同步。

Library/Preferences/ 存放偏好设置。ios的偏好设置(settings)应用也会在该目录查找应用的设置信息。NSUserDefaults保存在该目录下。iTunes或iCloud同步设备时备份该目录。

temp/ 存放应用运行时所需的临时数据。当某个应用没运行时,ios系统可能会清除该目录下的文件。但不可依赖这种自动清除机制,应该及时手动清除。

 

1、获取沙盒根目录的方法

NSString *homeDir = NSHomeDirectory();

2、获取Document路径

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *docDir = [paths objectAtIndex:0];

3、 获取Caches路径

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *cachesDir = [paths objectAtIndex:0];

 

4、获取tmp路径

NSString *tmpDir = NSTemporaryDirectory();

 

5、获取其他路径可参考http://my.oschina.net/meilidashijie/blog/99837

6、获取资源文件可参考http://my.oschina.net/meilidashijie/blog/99837,待补充。

 

 

NSSearchPathForDirectoriesInDomains有3个实参,后两个传入固定值(ios中)。该函数源于Mac Os X,在Mac Os X中可为后两个参数传入其他值。第一个参数为NSSearchPathDirectory类型的常量,指定目录的类型。部分常量不能在ios中使用(ios中不存在)。

NSSearchPathForDirectoriesInDomains返回值是NsArray而不是NSString。因为Mac Os X中可能获得多个符合的结果。ios中只有1个结果,所以得到的数组取下标为0的即可。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。