iPhone沙盒中有四个文件夹,分别是:documents、tmp、app、library.
1、Documents :用户生成的文档或数据,或者应用不能重新新创建的数据,存储在/Documents目录下,并且会被自动备份到iCloud;
2、AppName.app :应用程序的包存储在/app目录下。由于应用程序必须经过签名,所以该目录下的内容不能修改,否则程序可能无法启动;
3、tmp:临时文件存放在该目录下(应用程序再次启动时不需要的信息,应用需要写到本地存储,内部使用的临时数据,但不需要长期保留使用),文件不会被iCloud备份,应用在使用完之后需要记得删除这些文件,这样才不会继续占用用户设备的空间;
4、Library:其又被分为Caches和Preferences。其中Caches存放应用程序可以重新下载或生成的数据(保存应用程序再次启动时需要的信息,如数据库缓存文件、可下载文件(杂志、报纸、地图应用使用的数据)等),Preferences包含应用程序的偏好设置文件(不能直接创建偏好设置文件,需要通过使用NSUserDefaults类还获取和设置应用程序的偏好设置)。
获取这些目录路径的方法:
1,获取家目录(app文件)路径的函数:
NSString *homePath = NSHomeDirectory();
2,获取Documents目录路径的方法:
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,获取应用程序程序包中资源文件路径的方法:
例如获取程序包中一个图片资源(apple.png)路径的方法:
NSString *imagePath =[[NSBundle mainBundle]pathForResource:@”apple”ofType:@”png”];
UIImage *appleImage =[[UIImage alloc]initWithContentsOfFile:imagePath];
代码中的mainBundle类方法用于返回一个代表应用程序包的对象。