iOS 沙盒机制及沙盒目录获取

1. iOS 沙盒机制

iOS 系统为每个iOS APP创建了一个独立的文件区域,该文件区域成为沙盒。该APP所有的非代码文件都只能保存在沙盒中,并且改APP不能访问其他APP的沙盒文件。

1.1 结构

沙盒的目录结构如下:

"应用程序包"
Documents
Library
    Caches
    Preferences
tmp
1.2说明

"应用程序包": 存放应用程序的源文件,包括资源文件和可执行文件。

Documents : 苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录

Library : 存储程序的默认设置或其它状态信息;

Library/Caches : iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。此目录下文件不会在应用退出删除

Library/Preferences : 存放通过NSUserDefaults来保存的配置信息。iTunes同步该应用时会同步此文件夹中的内容。

tmp : 提供一个即时创建临时文件的地方。

2. 沙盒目录获取

获取"应用程序包"目录 :

NSString *path = [[NSBundle mainBundle] bundlePath];
NSLog(@"%@", path);

获取Documents目录 :

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSLog(@"%@", path);

获取Library/Caches目录 :

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
NSLog(@"%@", path);

获取tmp目录 :

NSString *path = NSTemporaryDirectory();
NSLog(@"%@", path);