一、 每个iOS应用SDK都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制。

(1)应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒。

(2)应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里。

(3)苹果禁止任何读、写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。

(4)沙盒根目录里有四个文件夹:

AppName.app目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,

所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。

Documents目录:一般应该把应用程序的数据文件存到这个文件夹里,用于存储用户数据或其他应该定

期备份的信息。

Library目录:此文件下有两个文件夹,Caches存储应用程序再次启动所需的信息;Preferences包

含应用程序偏好设置文件,不过不要在这里修改偏好设置。

tmp目录:存放临时文件,即应用程序再次启动不需要的文件。

二、获取沙盒路径

(1)获取沙盒根目录的方法,有以下几种:

1、用NSHomeDirectory获取

    NSString *path = NSHomeDirectory();//主目录
NSLog(@"NSHomeDirectory:%@ \n ",path);

2、用用户名获取

   NSString *userName = NSUserName();//获取该应用程序的用户名
NSString *rootPath = NSHomeDirectoryForUser(userName);
NSLog(@"NSHomeDirectoryForUser:%@ \n ",rootPath);

(2)获取Document路径

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];//Documents目录
NSLog(@"NSDocumentDirectory:%@ \n ",documentsDirectory);

(3)获取tmp路径

   NSString *temPaths = NSTemporaryDirectory();//在里面写数据,程序退出后会没有
NSLog(@"temPaths:%@ \n",temPaths);

(4)获取cache路径

    NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [cachesPaths objectAtIndex:0];
NSLog(@"NSCachedDirectory:%@ \n ",cachesDirectory);

(5)获取应用程序程序包中资源文件路径的方法

例如获取程序包中一个图片资源(apple.png)路径的方法:代码中的mainBundle类方法用于返回一个代表应用程序包的对象。

    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];
UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];

三、写入文件

1     //获取Document路径
2 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
3 NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
4 NSLog(@"NSDocumentDirectory:%@ \n ",documentsDirectory);
5
6 //向documentDirectory写入文件
7 NSArray *array = [[NSArray alloc] initWithObjects:@"hello",@"content",nil];
8 NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"test.txt"];
9 [array writeToFile:filePath atomically:YES];

四、读取文件

1     NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"test.txt"];
2 NSArray *array_1 = [[NSArray alloc]initWithContentsOfFile:filePath];
3 NSLog(@"读取Document中的文件:%@",array_1);

iOS沙盒(sandbox)机制及获取沙盒路径的更多相关文章

  1. iOS沙盒(sandbox)机制及获取沙盒路径

    一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应 ...

  2. IOS学习之IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...

  3. iOS学习之iOS沙盒(sandbox)机制和文件操作1

    iOS学习之iOS沙盒(sandbox)机制和文件操作 接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的H ...

  4. IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作   作者:totogo2010 ,发布于2012-9-21,来源:CSDN   目录: IOS学习之IOS沙盒(sandbox)机制和文件操作( ...

  5. iOS 沙盒(sandbox)机制和文件操作

    本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...

  6. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

    转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...

  7. iOS学习之iOS沙盒(sandbox)机制和文件操作(一)

    1.iOS沙盒机制 iOS应用程序仅仅能在为该改程序创建的文件系统中读取文件,不能够去其他地方訪问,此区域被成为沙盒,所以全部的非代码文件都要保存在此,比如图像,图标,声音,映像,属性列表,文本文件等 ...

  8. iOS学习之iOS沙盒(sandbox)机制和文件操作复习

    1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  9. iOS开发-沙盒(sandbox)机制

    苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...

随机推荐

  1. python多线程(四)

    原文:http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html 本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础 ...

  2. 深入GCD(二): 多核心的性能

    概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系).在低层,GCD全局dispatch queue仅仅是工作线程池的抽象.这些队列中的Bl ...

  3. 自己动手实现浏览器,21天自制chromium:起手篇

    转:https://zhuanlan.zhihu.com/p/29101613?utm_medium=social&utm_source=qq 大家好,我又来了.这篇是21天自制原子弹的姐妹篇 ...

  4. BUPT 2012复试机考 4T

    题目描述 我们都学习过计算机网络,知道网络层IP协议数据包的头部格式如下: 其中IHL表示IP头的长度,单位是4字节:总长表示整个数据包的长度,单位是1字节.传输层的TCP协议数据段的头部格式如下:  ...

  5. C++类型的转换

    C风格转换是“万能的转换”,但需要程序员把握转换的安全性,编译器无能为力:static_cast最接近于C风格转换,但在无关类指针转换时,编译器会报错,提升了安全性:dynamic_cast要求转换类 ...

  6. [React] Use React.memo with a Function Component to get PureComponent Behavior

    A new Higher Order Component (HOC) was recently released in React v16.6.0 called React.memo. This be ...

  7. Android 使用ListView的A-Z字母排序功能实现联系人模块

    在上一篇文章其中,主要学习了ListView的A-Z字母排序功能以及依据输入框的输入值改变来过滤搜索结果,假设输入框里面的值为空.更新为原来的列表,否则为过滤数据列表,包含汉字转成拼音的功能.假设你还 ...

  8. 从实例看hibernate的主键生成策略

    学习了hibernate会发现.hibernate中有实体类.实体类的映射文件.可是我们怎么样才干知道实体类的主键是如何的生成方式呢?hibernate提供的主键生成策略帮我们完美地解答了这个疑问.以 ...

  9. js 验证 输入值 全是中文

    1.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  10. docker (2)---存储、网络(利用docker容器上线静态网站)

    一.docker底层依赖的核心技术 1.命名空间 (Namespaces) 2.控制组 (Control Groups) 3.联合文件系统 (Union File System) 4.Linux 虚拟 ...