程序中的文件之沙盒以及plist文件的初步使用
2017-06-08 12:22
183 查看
沙盒是相对于“应用程序”的文件,也就是相相应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文件的样例:
执行之后的结果:
能够通过文件的方式打开,会看到里面是xml的格式。
获取之后的结果输出:
通过上面,我们也能够数据写入和获取的方法。
每个应用都有自己的应用沙盒(应用沙盒就是文件系统文件夹)。与其它文件系统隔离。应用必须呆在在积极的沙盒中。其它的应用不可以訪问沙盒。
(这个是在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的格式。
获取之后的结果输出:
通过上面,我们也能够数据写入和获取的方法。
相关文章推荐
- 程序中的文件之沙盒以及plist文件的初步使用
- EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- 【iOS开发-2】Info.plist文件的初步窥探:如何增减配置以及如何用代码调用里面的值
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
- VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 VMware Authorization Service 当前未运行
- 使用autoconfig/automake生成makefile文件以及将程序打包为tar.gz
- 使用Settings Bundle为程序添加设置项(续)使用plist文件永久存储
- [课堂笔记]secureCRT终端仿真程序的使用和文件的上传下载以及chomd的使用
- QT学习之阻拦退出程序函数以及事件过滤器的使用,以及文件的操作。
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。
- 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件
- plist文件的形式保存在本地程序沙盒中
- IOS plist与沙盒的初步使用
- EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
- nodejs 初步使用以及实现文件上传的功能
- Global.asa文件的使用及Chat程序
- IIS建立新网站出错-另一个程序正在使用此文件,进程无法访问
- 使用MAP文件定位程序Crash