【转】IOS 沙盒机制及各个目录

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

)

tmp目录下不是每次重启都会删除掉其中的内容,安装网上的说法是3天之后系统才会删除。

时间: 2024-11-07 03:01:27

【转】IOS 沙盒机制及各个目录的相关文章

IOS 阶段学习第25天笔记(IOS沙盒机制介绍)

IOS学习(OC语言)知识点整理 一.IOS沙盒机制介绍 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访问(extension) 2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制 3)应用沙盒一般包括以下几个文件目录: 1.应用程序包:包含所有资源文件和可执行文件 2.Documents:保存应用

ios 沙盒机制

1.IOS沙盒机制 在ios系统中,系统都为每一个app创建一个资源目录,这个目录称之为沙盒 .里面存放着图片,属性文件plist,bundle,nib文件等. 其特点如下: 1.每个应用都有属于自己的存储空间 -- 沙盒. 2.每个应用都只能访问自己的沙盒,不能访问别的沙盒 3.每个应用的文件操作必须在沙盒内,比如数据库存储,文件存储等 2.沙盒目录结构 Documents 应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 --- Caches 存储应用程序再次启动所需的信

iOS沙盒机制

第一.什么是沙盒 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒 第二.保存内容 所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等 第三.作用 iOS沙盒为程序运行提供了很好的安全保障 第四.目录 1.Documents目录:这个目录用于存储用户数据或其它应该定期备份的信息,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录. 2.AppName.app 目录:这是

【学习ios之路:UI系列】iOS沙盒机制,文件读取,归档与反归档

1.IOS中的沙盒机制 IOS中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 特点: 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.如下图

IOS 沙盒机制 浅析

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 1.每个应用程序都在自己的沙盒内(提示:在IOS8中已经开放访问) 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 //获取home目录 NSString *homePath = NSHomeDirectory(); NSLog(@"h

ios沙盒机制(sandbox)

转自:http://www.cnblogs.com/taintain1984/archive/2013/03/19/2969201.html ios中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不能访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片,声音,属性列表和文本文件. 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 如何查看模拟器的沙盒文件夹在mac

iOS沙盒机制介绍

一.沙盒机制 沙盒的概念:沙盒是每一个iOS应用程序都会自动创建的一个文件系统目录(文件夹),而且沙盒还具有独立.封闭.安全的特点. 沙盒机制 iOS中的沙盒不仅仅是一个文件目录,TA其实更是一种安全体系 TA规定了应用程序只能在为该应用程序创建的文件夹(也就是沙盒)内访问文件,不可以访问其他沙盒内的内容(iOS已经部分开放访问) 所有的非代码文件都保存在沙盒中,图片.音频.视频.属性列表(plist).sqlite数据库以及文本文件等. 沙盒机制的特点 每个应用程序的活动范围都限定在自己的沙盒

iOS沙盒机制的基本操作总结

每个ios程序都有自己的沙盒(sandBox),ios8之后提供沙盒部分开放 我们可以访问沙盒下的文件夹 文件夹包括: 1,documents:保存应用运行时生成的需要持久化的数据 2.tem:保存临时数据,系统重新启动自动消失 3.library:存储的程序默认的设置和其他信息 4.library/caches:保存临时文件 5.library/Preferences:保存偏好设置配置信息,sqlite数据 #import <Foundation/Foundation.h> int main

ios沙盒机制---基本数据类型的存取和文件的基本操作

沙盒快速存储及读取 存储:  [[NSUserDefaults standardUserDefaults] setObject:@"abc" forKey:@"1"]; [[NSUserDefaults standardUserDefaults] synchronize]; 读取: NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"1"]; //获取一些目录