文章目录
  1. 1. 1.沙盒介绍
  2. 2. 2.模拟器中的沙盒位置
  3. 3. 3.获取真机的沙盒
  4. 4. 4.沙盒根目录结构:
  5. 5. 5.代码获取沙盒路径
  6. 6. 6.文件操作
  7. 7. 7.NSBundle又是什么鬼

1.沙盒介绍

iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒。每一个APP都是一个信息孤岛,相互是不可以进行通信的,可以通过URL Scheme进行APP间跳转。
一般使用沙盒保存照片、声音、文本文件,还可以进行对象持久化。

2.模拟器中的沙盒位置

/Users/XXX/Library/Application Support/iPhone Simulator/
Xcode6后改为/Users/XXX/Library/Developer/CoreSimulator

3.获取真机的沙盒

参考:获取真机的沙盒

4.沙盒根目录结构:

Documents、Library、temp。

  1. Documents:用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。
  2. Library:包含两个子目录:Caches 和 Preferences。Caches用来存放用户需要换成的文件。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。
  3. tmp: 用于存放临时文件,这个可以放一些当APP退出后不再需要的文件。

5.代码获取沙盒路径

NSString *directory = NSHomeDirectory();   //沙盒根目录
NSString *docPath =  [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];     //Documents目录
NSString *libPath =  [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];     //Library目录
NSString *tmp = NSTemporaryDirectory();  //tmp目录

6.文件操作

通过[NSFileManager defaultManager]基本可以进行所有的文件操作。
NSString path = @”XXXXX”; 通过上面获取沙盒路径的方法获取。
NSString
mp3Directory = [documentsPath stringByAppendingPathComponent:@”mp3”];
[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil]; //创建了一个MP3的文件夹,创建文件就新建一个XXX.mp3

7.NSBundle又是什么鬼

NSBundle是应用的资源文件,比如你自己拉到项目里的icon.png等图片,语音文件。
获取app资源路径
NSString *earth = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"png"];

如果使用了自定义的custom.bundle文件
NSString resourceBundle = [[NSBundle mainBundle] pathForResource:@”custom” ofType:@”bundle”];
NSString
earth = [[NSBundle bundleWithPath:resourceBundle] pathForResource:@”XXX”ofType:@”jpg”inDirectory:@”Images/MoreImages”];

文章目录
  1. 1. 1.沙盒介绍
  2. 2. 2.模拟器中的沙盒位置
  3. 3. 3.获取真机的沙盒
  4. 4. 4.沙盒根目录结构:
  5. 5. 5.代码获取沙盒路径
  6. 6. 6.文件操作
  7. 7. 7.NSBundle又是什么鬼