沙盒是相对于“应用程序”的文件,也就是相相应app所在的页面的文件。

每个应用都有自己的应用沙盒(应用沙盒就是文件系统文件夹)。与其它文件系统隔离。应用必须呆在在积极的沙盒中。其它的应用不可以訪问沙盒。

(这个是在ios8之前)

ios8之后,沙盒进行了开发,有关应用的安全性有待研究。

沙盒的根文件夹为:/Users/zhumin/Library/Developer/CoreSimulator/Devices/09E156EA-B44B-4CCA-9E32-9286D332DDF0/data/Containers/Data/Application/A861DA79-90CE-4106-9332-2A678A157AE0  //可见,一般沙盒的中的文件夹的名字都是应用随机产生一系列的字符串。

相关的图片:

(开发平台的文件夹,一般都是存放在mainbundle的文件夹以下)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="247" width="480">

(ios8之后的沙盒文件加的文件夹。程序的文件夹文件夹不在这里了,有待回答?

(ios8 之前的目录,mainbundle目录在沙盒里面,而且沙盒目录是隔离的。

以下依照ios7之前的文件加线了解下:

应用程序包:(图:layer)包括了全部哦的资源和可运行文件。

Documents:保存程序所需的持久化的数据执行,ITunes自己主动备份该文件夹。eg:游戏应用可将游戏存档保存在该文件夹

(存放基本的文件文件夹)使用plist存储,一般都是存储到这个文件夹下。

tmp:保存程序所需的暂时数据 执行,使用完成之后会将对应的文件从该文件夹中删除。应用没有执行时候也会清楚该文件夹以下的文;ITunes不会备份这个文件夹的文件夹。

(存放一些执行的时候锁须要的暂时数据)

Library:(库)分别有:

1)caches。保存应用执行时生成的须要持久化的数据,也就是缓存,我们常见的就是浏览器缓存,事实上一样的道理。

Itunes不会同步备份

2)preference,保存应用的全部偏好设置,iOS的Settings(设置)应用会在该文件夹中查找应用的设置信息。iTunes同步设备时会备份该文件夹。

我们锁使用的NSUserDefault 来持久化的时候,都会用到这个类来讲数据存储到这个文件夹下。

沙盒文件文件夹的获取方法:

1)通过查找出文件的路径,然后直接获取,也就是写死了。建议不那么写由于我们安装到手机上面等等,沙盒的目录的名字都是随机的字符串,所以会改变的。

2)通过获取沙盒的主文件夹方法,我们能够通过NSHomeDirectory()这种方法来获取,然后再在后面加上这个文件夹的名字。

eg:NSString * home = NSHomeDirectory();

[home stringByAppendingString(@"/Documents")];//这样的方法也是不去提倡的,由于这种方法中的“\”有可能格式会该厂“/”,所以存在不确定性。

所以。假设呀直接改变载入文件夹的文件夹,能够通过另外一个方法:[home stringByAppendingComponet(@"Documents")];这种方法就不存在“\”这个问题。

3)要获取documents的文件夹的文件夹,能够直接用法来获取。

eg:      NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);这种方法来直接获取。

NSDocumentDirectory表示要查找的文件加文件夹是decument。

YES代表展开路径中的波浪字符“~”,也就是用户的文件夹;

NSUserDomainMask代表从用户目录下找。

// 在iOS中。仅仅有一个文件夹跟传入的參数匹配。所以这个集合里面仅仅有一个元素

NSString*documents = [array objectAtIndex:0];这样就获取到了文件夹。要保存文件在这个文件夹以下。我们能够通过先创建一个文件的名字。然后加入到后面就可以。

tmp:NSString *tmp =
NSTemporaryDirectory();

Library/Caches:(跟Documents类似的2种方法)
利用沙盒根文件夹拼接”Caches”字符串

Library/Preference:通过NSUserDefaults类存取该文件夹下的设置信息

#######

属性列表是一种XML格式的文件。拓展名为plist
假设对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型。就能够使用writeToFile:atomically:方法直接将对象写到属性列表文件里

利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个參数改为:NSCachesDirectory就可以)


eg:以下的一个plist文件的样例:

 //1、获取目录document的路径
NSString *path1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [path1 stringByAppendingString:@"exmaple.plist"];
NSLog(@"%@",path);
// 将数据封装成字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"母鸡" forKey:@"name"];
[dict setObject:@"15013141314" forKey:@"phone"];
[dict setObject:@"27" forKey:@"age"];
// 将字典持久化到Documents/stu.plist文件里
[dict writeToFile:path atomically:YES];  //通过上面的路径获取文件的数据,这里仅仅是方便,假设在其它文件里获取文件的数据。我们须要再次获取文件的文件夹
  NSDictionary *dict2 = [NSDictionary dictionaryWithContentsOfFile:path];
  NSLog(@"%@",dict2.description);

执行之后的结果:



   

能够通过文件的方式打开,会看到里面是xml的格式。



获取之后的结果输出:

 

通过上面,我们也能够数据写入和获取的方法。




程序中的文件之沙盒以及plist文件的初步使用的更多相关文章

  1. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  2. ios本地文件内容读取,.json .plist 文件读写

    ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...

  3. IOS拷贝文件到沙盒

    - (void)copyFileFromResourceTOSandbox { //文件类型 NSString * docPath = [[NSBundle mainBundle] pathForRe ...

  4. IOS 从Resource文件夹下Copy文件到沙盒

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.t ...

  5. 使用CefSharp在.Net程序中嵌入Chrome浏览器(十)——独立文件夹部署

    CefSharp本身携带了一大堆文件,这些文件默认直接释放在exe文件底下,这种方式本身没有什么问题,但多了一大堆文件后不是很好看.本文这里就介绍一个方法,使得可以将CEF相关的文件部署到独立的文件夹 ...

  6. iOS沙盒(sandbox)机制及获取沙盒路径

    一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应 ...

  7. iOS沙盒(sandbox)机制及获取沙盒路径

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

  8. ios 简单的plist文件读写操作(Document和NSUserDefaults)

    最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...

  9. iOS开发之plist文件操作

    之前在想用代码去实现很多界面上能用interface builder可以拖进去的功能,现在想想真是够无知的啊.不仅效率低下,而且对于代码的维护带来不少麻烦,这段时间一直在反思看了design+code ...

随机推荐

  1. Python 35 线程(2)线程特性、守护线程、线程互斥锁

    一:线程特性介绍 from threading import Thread import time n=100 def task(): global n n=0 if __name__ == '__m ...

  2. ubuntu Ngin Install

    安装gcc g++的依赖库 #apt-get install build-essential #apt-get install libtool 安装 pcre依赖库 #sudo apt-get upd ...

  3. APP加固反调试(Anti-debugging)技术点汇总

    0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定 ...

  4. angularJS之ng-bind与{{}}取值的区别

    1:{{ }} 是等页面加载完后,再取值. 2:ng-bind 它是在页面加载的时候,是不会显示{{name}}这种变量出来. 3:ng-bind 可以解决 ng 页面闪烁加载问题. 4:ng-bin ...

  5. 去除DialogFragment的背景阴影,背景色,标题栏

    style中: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <s ...

  6. Android开发笔记(10)——使用Fragment传递

    转载请注明:http://www.cnblogs.com/igoslly/p/6911165.html 由于最近废寝忘食地在开发App,没来得及及时做总结,没有用很高级的部件,勉强也使用一些功能完成了 ...

  7. R 连接mysql数据库

    一.配置RODBC 1.R下载RODBC包,安装好.2.在http://dev.mysql.com/downloads/connector/odbc下载mySQL ODBC,安装好.3.windows ...

  8. C#快速获取指定网页源码的几种方式,并通过字符串截取函数 或 正则 取指定内容(IP)

    //只获取网页源码开始到标题位目的进行测试 //第一种方式经过测试,稍微快点 string url = "http://www.ip.cn"; HttpWebRequest req ...

  9. WIN10 64位下VS2015 C#直接添加 halcon 12导出的CS文件实现视觉检测

    C# halcon 12 联合编程的 实例 1.先调试好halcon程序,我以读取图片的程序为例.

  10. dubbo之分组聚合

    按组合并返回结果 ,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项. 相关代码可以参考 dubbo 项目 ...