沙盒笔记

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学习之NSBundle介绍和使用

bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle,

cocoa提供了类NSBundle.

我们现在用bundle获取程序里的一张图片,并显示到View上。

新建一个Single View Application,并在加入viewDidLoad方法里加入如下代码:

//    通过使用下面的方法得到程序的main bundle
    NSBundle *mainBundle = [NSBundle mainBundle];

    NSString *imagePath = [mainBundle pathForResource:@"QQ20120616-1" ofType:@"png"];
    NSLog(@"%@", imagePath);
    UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath];
    UIImageView  *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view addSubview:imageView];

在项目上右键,add图片文件图片文件QQ20120616.png。

运行程序:

打印出来图片路径如下

/Users/rongfzh/Library/Application Support/iPhone
Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/iOSSandbox.app/QQ20120616-1.png

我们可以看到,图片在iOSSandbox.app这个包里,

图片显示:


图片取出来并显示了。

时间: 2024-12-20 03:26:06

沙盒笔记的相关文章

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

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

浏览器沙盒是什么

是什么 沙盒(sandbox),另称沙箱,是一种按照安全策略限制程序行为的执行环境.“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分运行,“沙盒”会记下它的每一个动作:当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态. PS:sandbox并不是sandboxie,sandboxie是一种专业沙盒软件. 安全策略 1. 不能运行任何本地的的可执行程序. 2. 不能从本地计算机文件系统中读取任何信息,也不能往本地

沙盒存储

转载自:http://blog.csdn.net/enuola/article/details/8076221 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下.

iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)

AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** 沙盒中文件夹: 1.Documents : 存储长久保存的数据 2.library: Caches:存放的缓存,比如:视频,音频,图片,小说等等 Perferences:存储偏好设置,比如:应用程序是否是第一次启动 保存用户名和密码. 3.t

IOS数据存储 —— 沙盒

沙盒结构 沙盒的文件系统?录,如下图所示(假设应用的名称叫Layer) 1.Documents 目录 您应该将所有的应用程序数据文件写入到这个目录下. 这个目录用于存储用户数据或其它应该定期备份的信息. 保存由应用程序产生的文件或者数据,例如:涂鸦程序生成的图片,游戏关卡记录 iCloud会自动备份Document中的所有文件. 上架注意 如果保存了从网络上下载的文件,在上架审批的时候会被拒! 2.AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签

game center 沙盒调试问题

在真机上测试game center时,只能测试沙盒,期间遇到个问题记录一下 如果请求登陆时,系统返回这句话 "err Error Domain=GKErrorDomain Code=15" (下面进行之前,先确定你itunse关联的这个app,已经把game center打开) 1. ios7.0之前的系统可能是因为之前这台设备在弹game center登陆页面时,已经手动取消三次,则如果后台运行的不是沙盒game center时,永远会返回这个错误,解决方法是重置设备.正式产品也会是

IOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra

关于ios沙盒

沙盒下主要有四个文件夹:document,caches,tmp,library document 的路径  程序运行时生成的文件,这个文件不要存比较放大的文件,比如音频,视频类,因为这里的东西会被上传 caches 的路径       一般用于文件的下载,存储(不会被上传) tmp                    临时文件.程序结束后应该清空 获取沙盒路径: NSString *sandBoxPath = NSHomeDirectory(); 获取 document : NSString

iOS 开发查看应用的沙盒文件

在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): Xcode中,点击 Window -> Devices (或者使用快捷键 command + shift + 2) (2): 选中自己的设备,也就是iPhone 手机,然后在 Installed Apps 中选中需要查看的应用.如下图: (3):滑动鼠标到 Installed Apps 的底部,左键点