IOS沙盒机制(SandBox)

转载 2015年11月20日 15:18:14

IOS沙盒机制(SandBox)

http://www.cnblogs.com/taintain1984/archive/2013/03/19/2969201.html

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。

1.每个应用程序都在自己的沙盒内

2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容

3.应用程序向外请求或接收数据都需要经过权限认证

 

查看模拟器的沙盒文件夹在Mac电脑上的存储位置,首先,这个文件夹是被隐藏的,所以要先将这些文件显示出来,打开命令行:

 

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

 

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

 

然后重新启动Finder,点击屏幕左上角苹果标志——强制退出——选择Finder然后点击重新启动,这个时候在重新打开Finder就可以看到被隐藏的文件了。

 

还有一种比较简单的办法就是直接点击Finder图标右键——前往文件夹——输入/Users/your username/Library/Application Support/iPhone Simulator/ ,然后确认就可以了。your username是你本机的用户名

 


 

然后按下图进入相应的文件夹,就可以到模拟器的沙盒文件目录了:

接着进入一个模拟器版本,我这里是5.1

然后可以看到Applications下面存放的就是模拟器中所装的开发的应用程序,随便进入一个后可以看到,一个沙盒中包含了四个部分,如图所示:

分别是.app文件,这个就是可运行的应用文件,Documents,苹 果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;Library,存储程序的默认设置或其它 状态信息;Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除;tmp,创建和存放临时文件的地 方。

下面通过代码来获取这些目录:

复制代码
 1     //获取根目录  
 2         NSString *homePath = NSHomeDirectory();  
 3         NSLog(@"Home目录:%@",homePath);  
 4           
 5         //获取Documents文件夹目录,第一个参数是说明获取Doucments文件夹目录,第二个参数说明是在当前应用沙盒中获取,所有应用沙盒目录组成一个数组结构的数据存放  
 6         NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
 7         NSString *documentsPath = [docPath objectAtIndex:0];  
 8         NSLog(@"Documents目录:%@",documentsPath);  
 9           
10         //获取Cache目录  
11         NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);  
12         NSString *cachePath = [cacPath objectAtIndex:0];  
13         NSLog(@"Cache目录:%@",cachePath);  
14           
15         //Library目录  
16         NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);  
17         NSString *libPath = [libsPath objectAtIndex:0];  
18         NSLog(@"Library目录:%@",libPath);  
19           
20         //temp目录  
21         NSString *tempPath = NSTemporaryDirectory();  
22         NSLog(@"temp目录:%@",tempPath);  
复制代码

输出结果如下:

2012-08-03 11:10:24.325 SandBoxTest[12549:f803] Home目录:/Users/Ryan/Library/Application Support/iPhone Simulator/5.1/Applications/A6B99E5A-E2C7-46E9-867A-4E7619F0DA45


 

2012-08-03 11:10:24.325 SandBoxTest[12549:f803] Documents目录:/Users/Ryan/Library/Application Support/iPhone Simulator/5.1/Applications/A6B99E5A-E2C7-46E9-867A-4E7619F0DA45/Documents


2012-08-03 11:10:24.326 SandBoxTest[12549:f803] Cache目录:/Users/Ryan/Library/Application Support/iPhone Simulator/5.1/Applications/A6B99E5A-E2C7-46E9-867A-4E7619F0DA45/Library/Caches


2012-08-03 11:10:24.326 SandBoxTest[12549:f803] Library目录:/Users/Ryan/Library/Application Support/iPhone Simulator/5.1/Applications/A6B99E5A-E2C7-46E9-867A-4E7619F0DA45/Library


2012-08-03 11:10:24.326 SandBoxTest[12549:f803] temp目录:/var/folders/7z/1wj5h8zx7b59c02pxmpynd500000gn/T/

下面开始向目录里面创建文件,然后向文件里面写入内容:

复制代码
 1     NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
 2         NSString *documentsPath = [docPath objectAtIndex:0];  
 3         //写入文件  
 4         if (!documentsPath) {  
 5             NSLog(@"目录未找到");  
 6         }else {  
 7             NSString *filePaht = [documentsPath stringByAppendingPathComponent:@"test.txt"];  
 8             NSArray *array = [NSArray arrayWithObjects:@"Title",@"Contents", nil];  
 9             [array writeToFile:filePaht atomically:YES];  
10         }  
复制代码

创建成功后打开文件夹目录,可以看到test.txt文件:

接下来是把该文件中的内容读出来:

复制代码
1     //读取文件  
2     NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
3         NSString *documentsPath = [docPath objectAtIndex:0];  
4         NSString *readPath = [documentsPath stringByAppendingPathComponent:@"test.txt"];  
5         NSArray *fileContent = [[NSArrayalloc] initWithContentsOfFile:readPath];  
6         NSLog(@"文件内容:%@",fileContent);  
复制代码

输出结果如下:

2012-08-03 11:26:53.594 SandBoxTest[12642:f803] 文件内容:(

    Title,

    Contents

)

IOS沙盒机制(SandBox)

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件...
  • yeyeyeyye434343
  • yeyeyeyye434343
  • 2013年09月14日 10:23
  • 266

iOS沙盒机制(SandBox) 总结

 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。 沙盒有以...
  • u013247242
  • u013247242
  • 2015年02月26日 21:22
  • 235

iOS沙盒机制(sandBox)

一、沙盒概念:应用程序只能在为该程序创建的文件夹中进行文件的读取,这块区域称为沙盒。 二、沙盒机制 是一种安全机制 (1)应用程序只能在自己的沙盒中进行文件读取。 (2)应用程序不能访问其它应...
  • u013706150
  • u013706150
  • 2016年01月10日 18:28
  • 145

IOS学习—沙盒机制(SandBox)

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件...
  • wwwang89123
  • wwwang89123
  • 2013年10月15日 13:20
  • 969

iOS开发基础 - IOS沙盒机制(SandBox)

IOS沙盒机制(SandBox)IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比...
  • crystal_9527
  • crystal_9527
  • 2016年03月25日 10:50
  • 174

IOS沙盒机制(sandbox)

首先我们来认识一下沙盒,沙盒就是每一个app对应的一块存储空间。 沙盒中有下列文件夹 Documents:文档 最常打交道的目录 iTunes会备份和恢复此文件夹的内容 Library/C...
  • lee727n
  • lee727n
  • 2017年05月14日 01:43
  • 164

IOS开发中的沙盒机制

iOS App都有自己的存储空间,这个存储空间就叫沙盒,app可以在自己的沙河文件中读取文件,但是呢却不能访问其他app的沙盒文件,每个app的信息都是独立的,app之间不能进行信息通信,但是唯独可通...
  • qiaoqiaoqiao2014
  • qiaoqiaoqiao2014
  • 2015年07月24日 14:19
  • 480

iOS 沙盒机制的理解和使用

每个iOS应用都被限制在“沙盒”中,沙盒相当于一个加了仅主人可见权限的文件夹,及时在应用程序安装过程中,系统为每个单独的应用程序生成它的主目录和一些关键的子目录。苹果对沙盒有几条限制: 1. 应用...
  • yimingxuan88
  • yimingxuan88
  • 2016年09月28日 09:38
  • 2095

沙盒机制(sandBox)

一、每个iOS应用SDK都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制。     (1)、应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的...
  • forrhuen
  • forrhuen
  • 2014年07月15日 18:58
  • 86

IOS中的SandBox(沙盒机制)

面试的时候经常会问到沙盒,在项目中经常用到,但是让自己说的时候往往没在太关注,所以经常忘记。今天自己就总结了一下。有什么遗漏可以直接给我提出来,大恩不言谢了。1.什么是SandBox?IOS中的沙盒机...
  • lb_419086714
  • lb_419086714
  • 2016年06月02日 15:36
  • 166
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS沙盒机制(SandBox)
举报原因:
原因补充:

(最多只允许输入30个字)