iOS沙盒目录结构

225 阅读1分钟

沙盒目录结构:


获取目录方式:

1、沙盒目录

NSLog(@"%@",NSHomeDirectory());

输出结果:

/var/mobile/Applications/326640A7-6E27-4C63-BA5E-7391F203659A

2、tmp

NSLog(@"%@",NSTemporaryDirectory());

输出结果:

/private/var/mobile/Applications/326640A7-6E27-4C63-BA5E-7391F203659A/tmp/

3、Myapp.app

NSLog(@"%@",[[NSBundle mainBundle] bundlePath]);

输出结果:

/var/mobile/Applications/326640A7-6E27-4C63-BA5E-7391F203659A/PhoneCall.app

4、Documents

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

NSString *path = [paths objectAtIndex:0];

NSLog(@"%@",path);

输出结果:

/var/mobile/Applications/326640A7-6E27-4C63-BA5E-7391F203659A/Documents

这里用到的NSSearchPathForDirectoriesInDomains方法需要解释下,其声明如下:

FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);

该方法用于返回指定范围内的指定名称的目录的路径集合。有三个参数:

directory:NSSearchPathDirectory类型的enum值,表明我们要搜索的目录名称,比如这里用NSDocumentDirectory表明我们要搜索的是Documents目录。如果我们将其换成NSCachesDirectory就表示我们搜索的是Library/Caches目录。

domainMask:NSSearchPathDomainMask类型的enum值,指定搜索范围,这里的NSUserDomainMask表示搜索的范围限制于当前应用的沙盒目录。还可以写成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等。

expandTilde:BOOL值,表示是否展开波浪线~。我们知道在iOS中~的全写形式是/User/userName,该值为YES即表示写成全写形式,为NO就表示直接写成“~”。