程序中的文件之沙盒以及plist文件的初步使用

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

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

(这个是在ios8之前)

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

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

相关的图片:

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

(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的格式。

获取之后的结果输出:

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

时间: 2024-10-13 22:22:43

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

沙盒,plist文件,偏好设置

偏好设置: 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时,系统也可能会清除该目录下的文件.iTunes同步设备时不会备份该目录 Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录.一般存储体积大.不

将日志非覆盖式的写入沙盒mylog.log文件中

//将日志写入沙盒mylog.log文件中 -(void)writeLogMessageToLocationFile:(NSString *)logMessagesString isCover:(BOOL)isCover{ // NSDocumentDirectory 要查找的文件 // NSUserDomainMask 代表从用户文件夹下找 // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素 NSArray *paths = NSSearchPathForDirect

【iOS开发-3】sandbox沙盒介绍以及如何取得沙盒里面各文件的路径,图片导入方式和图片路径获取

其实每个APP的程序都是单独的一个文件夹,每个APP之间相互之间独立,所以它们的文件夹也是独立的,这个文件夹就是沙盒.沙盒好处,安全.坏处,程序之间彼此共享数据较为困难. (1)如何找到应用程序的沙盒源文件? 一般沙盒源文件都存放在~/Library/Application Support/iPhone Simulator/版本号/Applications/的文件夹中,但是这个Library(中文名叫资源库)文件夹是隐藏的.所以需要方法才能点击进去:在Finder中按CMD+SHIFT+G,然后

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

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(十)--独立文件夹部署 CefSharp本身携带了一大堆文件,这些文件默认直接释放在exe文件底下,这种方式本身没有什么问题,但多了一大堆文件后不是很好看.本文这里就介绍一个方法,使得可以将CEF相关的文件部署到独立的文件夹. 在开始改造之前,还是得另外新建一个工程安装一次CEFSharp,这样才能获取到相关资源文件.然后从这些资源文件中分离出来. 首先把CEF进程相关的文件拷贝到一个独立的文件夹: 然后我们的程序中只需要引用CE

去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码

从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import "SZMSettingsCell.h" @implementation SZMSettingsCell //选择不同的cell类型 + (UITableViewCellStyle)cellStyleWithDict:(NSDictionary *)dict{ UITableViewCellStyle

iOS 快速获取沙盒下任意文件夹的路径

NSLog(@"%@", NSHomeDirectory());//沙盒主目录 NSLog(@"%@", NSTemporaryDirectory());//沙盒中tmp文件夹的路径 NSLog(@"%@", [[NSBundle mainBundle] bundlePath]);//沙盒中*.app包的路径 NSLog(@"%@", [NSSearchPathForDirectoriesInDomains(NSDocumen

关于沙盒的读写文件的几种方式

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //    h获取应用沙盒 NSString *homaPath =  NSHomeDirectory(); NSLog(@"%@",homaPath); } /** * 下面的是用  plist  方式 保存 数据 */ -(void)savePlist{ NSString *homePath =  NSHomeDirectory();

在沙盒里创建文件夹

[[NSFileManager defaultManager] createDirectoryAtPath:沙盒路径  withIntermediateDirectories:YES attributes:nil error:nil];

网站优化过程中怎样快速经过沙盒期

http://t.qq.com/nanjingxia6396 http://t.qq.com/p/t/462084121633873 http://t.qq.com/lishuixiaojiena http://t.qq.com/p/t/459572093385815 http://t.qq.com/wuxixiaojienayou http://t.qq.com/p/t/443989011498492 http://t.qq.com/jiangyinxi2014 http://t.qq.com