一、应用沙盒目录  

应用沙盒包含多个目录:

  1、应用程序包:(application bundle):包含所有的资源文件和可执行文件,并且是只读目录。

  2、Library/Preferences/:存放所有的偏好设置(preferences),iOS的Setting(设置)应用会在该目录中查找应用的设置信息。通过NSUserDefaults类,可以存取Library/Preferences下的设置。iTunes会再同步设备时备份该目录。

  3、tmp/:用于保存应用运行是所需的临时数据,使用完毕后再将响应的文件从该目录删除。应用没有运行的时候,系统也可能会清理该目录下的文件。iTunes不会在同步设备时备份该目录。通过函数NSTemporaryDirectory可以得到应用沙盒下tmp目录的全路径。

  4、Documents/:保存应用运行时生成的需要保留的数据。iTunes同步设备时会备份该目录。当设备故障时,可以从iTunes恢复该目录下的文件。例如,游戏应用可将游戏存档保存在该目录下。

  5、Library/Caches/:保存应用运行时生成的需要保留的数据。与Documents目录不同的是,iTunes不会在同步设备时备份该目录。不备份缓存数据的主要原因是,这些数据的体积可能会很大,会延长同步设备所需的时间。如果数据源是在别处(例如,Web服务器),那么可以将得到的数据保存在该目录。当用户需要恢复设备的时候,可以再从Web服务器下载这些数据。

二、文件路径

  通过C函数NSSearchPathForDirectoriesInDomains可以得到沙盒中得目录的全路径。该函数有三个参数,分别是目录类型、域掩码(domain mask)和一个布尔值(决定是否需要展开路径中得波浪字符“~”)。第一个参数是NSSearchPatchDirectory常量,后两个参数在iOS上会传入两个固定值NSUserDomainMask和YES。例如,要得到应用的Documents目录,可以像如下这样调用NSSearchPathForDirectoriesInDomains函数:

  NSArray * documentPaths = NSSearchPathForDirectoriesInDomain(NSDocumentDirectory,NSUserDomainMask,YES);

  NSString * ourDocumentPath = [documentPaths objectAtIndex:0];

  注意,NSSearchPathForDirectoriesInDomains的返回值是NSArray对象。这是因为该函数源自Mac OS X,在Mac OS X上,可能会有多个目录和传入的参数匹配。但是在iOS上,一个目录类型只会对应一个目录。所以这里可以直接获取数组的第一个NSString对象。

  还可以通过NSHomeDirectory函数得到沙盒自身的路径。注意,系统不允许在沙盒的根目录下创建文件和目录,但是可以在沙盒已有的可写目录下创建新的目录或文件。这些可写目录包括Documents、Library和tmp。可以将目录名加在NSHomeDirectory函数返回的字符创后面,从而拼出目录的全路径。

  NSString * sandboxPath = NSHomeDirecotry();

  //根据沙盒的全路径,可以得到其下自录的全路径

  NSString * documentPath = [sandboxPath stringByAppendingPathComponent:@"Documents"];

  但是与NSHomeDirectory目录名相比,使用NSSearchPathForDirectoriesInDomains更安全。因为新版的操作系统可能会修改目录的目录名,这样也可以避免拼错加上去的目录名。

参考资料:<IOS编程(第2版)》章节:15.1 应用沙盒,P.260

应用沙盒(Application Sandbox)的更多相关文章

  1. 【计算机】基本概念的理解 —— 沙盒(sandbox)、交互式计算/编程/应用

    web scraper:网络铲: scraper:n. 刮刀:铲土机:守财奴: 1. 交互式计算/编程/应用(interactive computing/application/programming ...

  2. iOS 沙盒(sandbox)结构 使用 实例

    声明:该文档是经过自己查找网上的资料以及自己多年的经验后而总结出来的,希望对大家有所帮助,有什么不恰当支出还请大家多指点! iOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为 ...

  3. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

    转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...

  4. iOS沙盒(sandbox)

    iOS沙盒 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,默认下iOS应用只能访问自己的沙盒 extenaion是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补 ...

  5. <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!

    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0 ...

  6. 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0这个问题& ...

  7. iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)

    版权声明:本文为博主原创文章,转载请声明出处:http://blog.csdn.net/jinnchang 1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系.每个 iOS 应用程 ...

  8. Swift iOS 文件操作:沙盒(SandBox)、程序包(NSBundle)

    1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系.每个 iOS 应用程序都有一个单独的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒.所有的非代码文件 ...

  9. 【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)

    1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系. 每一个 iOS 应用程序都有一个单独的文件系统(存储空间).并且仅仅能在相应的文件系统中进行操作,此区域被称为沙盒. 全部的非 ...

随机推荐

  1. js比对一维数组全等的算法

    //辅助方法1,返回某个值在数组中的位置 Array.prototype.indexOf = function (e) { for (var i = 0, l = this.length; i < ...

  2. hdu 2544(SPFA)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. hdu 1558(计算几何+并查集)

    Segment set Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. Python的并发并行[3] -> 进程[0] -> subprocess 模块

    subprocess 模块 0 模块描述 / Module Description From subprocess module: """Subprocesses wit ...

  5. Python的程序结构[2] -> 类/Class[3] -> 内建类与内建函数

    内建类与内建函数的区分 / Distinction of Built-in Type and Function 对于 Python,有许多可以不需要定义或引用就可以使用的函数(类)(参考内建模块),诸 ...

  6. Python的程序结构[7] -> 生成器/Generator -> 生成器浅析

    生成器 / Generator 目录 关于生成器 生成器与迭代器 生成器的建立 通过迭代生成器获取值 生成器的 close 方法 生成器的 send 方法 生成器的 throw 方法 空生成器的检测方 ...

  7. ACM的奇计淫巧系列

    突然想写个系列,算是总结总结集训中遇到的各种黑科技吧,这是目录 ACM的奇计淫巧_输入挂 ACM的奇计淫巧_扩栈C++/G++ ACM的奇计淫巧_bitset优化

  8. [POI2015]Kinoman

    题目大意: 给你一个长度为n的数列f,f中共有m种不同的数,每种数都有一个权值w[i]. 你可以选定一个f中的区间,定义区间的权值为这一区间只出现一次的数的权值和. 问权值最大的区间的权值是多少? 思 ...

  9. 七. 多线程编程2.Java线程模型

    Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. 为更好的理解多线程环境的优势可以将它与它 ...

  10. 四. Java继承和多态9. 类与类之间的关系

    类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...