iOS沙盒解析及操作

介绍

  1. 概念:每个应用拥有自己的应用沙盒,所谓的应用沙盒就是文件系统目录。
  2. 沙盒文件目录
1. MyApp.app:该目录包含了应用程序本身的数据,包括源文件和可执行文件等。程序启动后,会根据需要从该目录中动态加载代码和资源到内存,用到了懒加载的思想。整个目录是只读的。iTunes不会自动备份该目录
2. Documents:保存应用运行时生成的持久化的数据,数据类型仅限于不可再生的数据,iTunes会自动备份该目录
3. tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,在没有运行时,系统磁盘存储空间不足时可能自动清理该目录下的文件,iTunes不会自动备份该目录,iPhone重启时该目录下文件丢失
4. Library:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录
5. Library/Caches:存放缓存文件,iTunes不会备份该目录,不会再应用退出删除,一般存放体积大不是很重要的资源
6. Library/Preferences:保存应用的所有偏好设置,使用NSUserDefault写的设置数据都会保存在该目录的plist文件中,iTunes会自动备份该目录 

沙盒操作

  1. 获取应用根目录
NSString *path = NSHomeDirectory();
  1. tmp
NSString *temPath = NSTemporaryDirectory();
  1. MyApp.app
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
  1. Documents
NSString *DocPath = [NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMash, Yes) objectAtIndex:0];

这里用到的方法如下:

 NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);  
  • directory:NSSearchPathDirectory类型的enum值,表明我们要搜索的目录名称
  • domainMask:NSSearchPathDomainMask类型的enum值,指定搜索方位,这里的NSUserDomainMask表示搜索的方位限制于当前应用的沙盒。
  • expandTilde:BOOL值,表示是否展开波浪线"",因为在iOS中的全写形式是/User/UserName,为YES即表示写成全写形式,为NO直接表示为"~"

打开模拟器沙盒目录

  • 文件都在个人用户名文件夹下的一个隐藏文件夹********资源库********里
  1. 设置显示隐藏文件,终端中输入:
显示Mac隐藏文件的命令: default write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令: default write com.apple.finder AppleShowAllFiles -bool false
  1. 打开资源库后找到/Application Support/iPhone Simulator/文件夹
  • 使用NSHomeDirectory()输出根目录,在Finder菜单栏上->前往->前往文件夹->输入输出的根目录回车

你可能感兴趣的:(iOS沙盒解析及操作)