iOS沙盒(sandbox)机制及获取沙盒路径
一、 每个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)机制及获取沙盒路径的更多相关文章
- iOS沙盒(sandbox)机制及获取沙盒路径
一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应 ...
- IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作1
iOS学习之iOS沙盒(sandbox)机制和文件操作 接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的H ...
- IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作 作者:totogo2010 ,发布于2012-9-21,来源:CSDN 目录: IOS学习之IOS沙盒(sandbox)机制和文件操作( ...
- iOS 沙盒(sandbox)机制和文件操作
本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...
- iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)
转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
1.iOS沙盒机制 iOS应用程序仅仅能在为该改程序创建的文件系统中读取文件,不能够去其他地方訪问,此区域被成为沙盒,所以全部的非代码文件都要保存在此,比如图像,图标,声音,映像,属性列表,文本文件等 ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作复习
1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...
- iOS开发-沙盒(sandbox)机制
苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...
随机推荐
- 533. Lonely Pixel II
Given a picture consisting of black and white pixels, and a positive integer N, find the number of b ...
- hanzi 全拼音 qu de
Function pinyin(ByVal mystr As String, Optional types As Byte = 0) As StringDim temp As String, i ...
- Jenkins中的Job配置里缺少“触发远程构建(例如,使用脚本)”选项的问题解决
如图所示的功能没有出现在Job配置页面,这是由于权限问题导致的,解决方法如下: 1.[系统管理]->[Configure Global Security] 2.配置如下: 3.或者你有第三方权限 ...
- android 按两次物理返回键退出程序
<?xml version="1.0" encoding="utf-8"?> <!-- 定义当前布局的基本LinearLayout --> ...
- 基于centos 创建stress镜像——源码安装stress
上一篇文章进行了yum安装stress,这次对stress进行源码编译安装,并且生成新的镜像 创建Dockerfile目录 [vagrant@localhost ~]$ mkdir -p /tmp/s ...
- Android开发—智能家居系列】(二):用手机对WIFI模块进行配置
在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...
- PHP中extract()函数的妙用
看cakephp 2.3.8的源代码,很多地方都用 到 compact('name', 'response'); extract($status, EXTR_OVERWRITE); 这样的代码.com ...
- 微信小程序 - 提取字体图标与其优化
微信小程序,无论是字体图标还是图标,都差不多,只不过是为了以后字体图标修改方便,或者加效果方便而使用它而已! 1. 下载font-awesome http://fontawesome.dashgame ...
- takeLatest 如何接受 this.props.dispatch 传递的参数
1.步骤一 // 获取查询参数 getQueryParams(params){ // 请求月考核分的数据 this.props.dispatch({ type:'getMonthlyAssessmen ...
- 使用虚拟机VM运行Linux版OpenERP
Table of Contents 下载.安装vmware player --免费 从百度云下载 镜像文件 建立vm 运行vm 访问openerp 更新代码至最新 下载.安装vmwar ...