沙盒的详解:

•iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒

•iOS常用目录:
–Bundle           //该目录下的文件是用来存储应用程序包的,包中含有应用程序和素材资源
–Documents     //该目录下的文件通常用来持久性存储数据并备份,例如归档文件
–Library/Caches   //该目录下的文件通常用来持久性存储数据,没有对数据进行备份
–Library/Preference //该目录下的文件用来持久性存储系统的设备信息,并对数据进行备份。
–tmp             //一个临时文件夹,用来存储临时文件,程序一旦停止运行,所存文件的内容就会消失。
 
应用程序包路径:资源库/Developer/CoreSimulator/Devices(设备plist文件)/data/Containers/Bundle/Application(应用程序包)

沙盒路径:资源库/Developer/CoreSimulator/Devices(设备plist文件)/data/Containers/Data/Application/(Document、Library、tmp)Library/(Caches缓存、Preferences用户偏好设置)
 
•应用程序包:(Bundle)包含了所有的资源文件和可执行文件
•Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
•Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积较大、不需要备份的非重要数据
•Library/Preference:保存应用的所有偏好设置,iOS的设置应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录
•tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录
 
沙盒目录的获取:
1.获取home目录:

  NSString *homePath = NSHomeDirectory();

2.获取Documents目录,有两种方式:

  方式一:通过函数的形式获取(Domains:表示一个搜索域,就是手机的存储区域) 

  NSArray *directorys = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsPath = [directorys lastObject];

  方式二:通过拼接字符串的形式获取(不建议采用字符串拼接的方式获取目录,因为新版本的操作系统可能会修改默认目录名称)

  NSString *documentsPath2 = [homePath stringByAppendingPathComponent:@"Documents"];

 
3.获取caches缓存目录(当然也可以通过拼接字符串的形式获取,这里就不列出来了) 

  NSArray *caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString *cachesPath = [caches lastObject];

4.通过函数获取临时目录

  NSString *tmp = NSTemporaryDirectory();

5.NSBundle对象:图片、xib、storyboard、plist文件都是放在应用程序包里的  

  NSBundle *bundle = [NSBundle mainBundle];

//获取包中的文件的路径

NSString *path= [bundle pathForResource:@"array" ofType:@"plist"];

//加载包里xib文件

NSArray *views = [bundle loadNibNamed:@"cell" owner:self options:nil];

  

提示:获取目录不是目的,获取目录为了在该目录对文件进行操作,例如创建文件并存储数据

6.创建文件 

  //创建文件管理对象

NSFileManager *fm = [NSFileManager defaultManager];

//创建文件

const char *pt = "how are you";

NSString *fileName = [documentsPath stringByAppendingPathComponent:@"1.txt"];

NSData *data = [NSData dataWithBytes:pt length:strlen(pt)];

//NSString *str = @"how are you";

//NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

if([fm createFileAtPath:fileName contents:data attributes:nil])

{

NSLog(@"文件创建成功");

}

7.读取文件

//直接读

NSError *error = nil;

NSStringEncoding enc = 4/*NSUTF8StringEncoding*/;

NSString *str2 = [NSString stringWithContentsOfFile:fileName usedEncoding:&enc error:&error];

if(!error)

{

NSLog(@"str2:%@",str2);

}

else

{

NSLog(@"读取失败,%@",error);

}

iOS: 沙盒的详解和目录的获取的更多相关文章

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

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

  2. dbdeployer MySQL沙盒部署详解

    一.工具介绍 前几日用mysql-sandbox来搭建MySQL8.0新版本时发现用不了,提示需要使用dbdeployer才行,瞬间觉得mysql-sandbox不香了,只好咬咬牙来熟悉dbdeplo ...

  3. iOS 沙盒目录结构介绍

    iOS系统中,每个应用都有自己的沙盒,且应用只能访问其对应的沙盒目录下面的文件.当然,在用户授权的情况下,应用也可以访问其他目录下面的文件.比如,用户授权情况下,应用可以访问相册.通讯录.在开发中,经 ...

  4. iOS 沙盒目录结构及正确使用

    前言:处于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如在用户授权情况下访问通讯录,相册等),这个规则展示了iOS系统的封闭性.在开发中常常需要数据存储的功 ...

  5. iOS--浅谈iOS沙盒目录

    原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713 出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文 ...

  6. iOS - 沙盒与目录

    NSFileManager NSBundle Class Cluster 采用Tagged Pointer的字符串 NSPathStore iOS证书ipa包重签名探究 url 结构 1. iOS 沙 ...

  7. iOS沙盒目录结构解析

    iOS沙盒目录结构解析 原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713     出于安全考虑,iOS系统的沙盒机制规定每个应 ...

  8. iOS沙盒目录

    出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能在用户授权的情况下被第三方应用访问),这个规则把iOS系统的封闭性展现的淋漓尽致. 一.沙盒中 ...

  9. IOS沙盒Files目录说明和常用操作

    Ios沙盒目录清单 1 Documents 用于存储用户生成的文件.其他数据及其他程序不能重新创建的文件,默认文件通过iCloud自动备份.如果不需要iCloud备份,则设置标记 NSURLIsExc ...

随机推荐

  1. Yii 简明学习教程

    Yii是一个基于组件的高性能PHP框架,用于快速开发Web应用程序(下面内容基于Yii 1.1) 1. 典型的工作流 用户向入口脚本index.php发起请求 入口脚本加载应用配置config.php ...

  2. 趣味js【练习题】

    1.无限极函数递归,使每次的参数相乘 需求:add(1)(2)(3)(4)(5) 1.1首先要知道一个东西,就是function每次调用,都会默认执行tosting 1.2利用递归,每次返回的都是函数 ...

  3. vue引入自己写的js文件

    话不多说,直接上代码呀~ 先来个结构图: 中规中矩的vue-cli就写了一个自己的js文件 那么我想要引入到vue组件里. 1.首先写我的js文件 2.引入到vue组件!!!一定要用{}把方法名拿过来 ...

  4. 初拾Java(问题一:404错误,页面找不到)

    做测试尤其是想走自动化测试之路的人,怎么可以不会码代码?!怒了... 再次开始拾起Java,坚持坚持!!! 刚写了一个JSP页面,想在Myeclipse里面跑来试试,结果搞了半天出现以下错误: 试着去 ...

  5. LongAdder & AtomicInteger

    JDK8 推荐  LongAdder替代 AtomicInteger, AtomicInteger内部是实现使用 (网友使用jad反编译源码 参考 http://ifeve.com/enhanced- ...

  6. Git gitconfig 配置

    difftool: [diff] tool = bc4 algorithm = histogram [difftool] prompt = false [difftool "bc4" ...

  7. 八皇后--python代码

    迭代和递归方法的运用 import random def prettyprint(solution): #图形化处理数据 def line(pos,length=len(solution)): #单行 ...

  8. JSON与Javabean转换的几种形式

    JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换: String json1="{'name':'zhangsan','age':23,'i ...

  9. 推荐2本学习java书和PDF

    推荐2本学习java书和PDF下载地址 <深入理解Java虚拟机:JVM高级特性与最佳实践>共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而 ...

  10. nyoj 作业题 dp

    作业题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...