版权声明:转载请注明出处:http://blog.csdn.net/kevindongkun
iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据
1、初识沙盒:(1)、存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的。要想数据永久保存,将数据保存成文件,存储到程序的沙盒里就可实现这一功能;
(2)、沙盒的本质就是一个文件夹,名字是随机分配的。
(3)、沙盒构成:
Document : 存储用户数据,需要备份的信息
Library/Caches:存储缓存文件,程序专用的支持文件
Library/Preferences :存储应用程序的偏好设置文件
.app :程序包(iOS8时,app不存储在沙盒里, 有单独的文件夹存储所以程序的app包)
tmp : 存储临时文件。比如:下载的zip包,解压后可删除。
参考;
Documents
目录:将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
AppName.app 目录:应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录包含应用程序的偏好设置文件。不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
2.获取文件路径的数组(返回目录)
//参数一:搜索的目录
//参数二:搜索的范围
//参数三:YES:表示绝对路径,NO:表示相对路径
(1).存储字符串:
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//得到文件的具体路径(默认在数组的最后一个)
NSString *document = [array lastObject];
//拼接我们自己创建的文件的路径
NSString *documentPath = [document stringByAppendingPathComponent:@"test.txt"];
NSString *str = @"你好, 我是沙盒Document文件";
[str writeToFile:documentPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", documentPath);
*通过输出的地址-->前往文件夹 就可找到具体文件的存储地方;如下图:
(2).存储数组:
//前三步同上:
NSArray *array =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documents = [arraylastObject];
NSString *documentPath = [documentsstringByAppendingPathComponent:@"arrayXML.xml"];
//第四步:准备好要存到本地的数组
NSArray *dataArray = [NSArray arrayWithObjects:@"你好", @"我是", @"沙盒", nil];
//第五步:将数组存入到指定的本地文件
[dataArray writeToFile:documentPath atomically:YES];
//第六步:可对已经存储的数组进行查询等操作
NSArray *resultArray = [NSArray arrayWithContentsOfFile:documentPath];
NSLog(@"%@", documentPath);
查找如下图:***数组存储到本地之后是以xml形式存储的,不论文件是txt还是xml;
(3).存储字典:
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [array lastObject];
NSString *documnetPath = [documents stringByAppendingPathComponent:@"dic.plist"];
//准备要存入的字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Kevin",@"name",@"男",@"gender",nil
//将字典存入指定的本地文件
[dic writeToFile:documnetPath atomically:YES];
//可对已经存储的字典操作
NSDictionary *resultDic = [NSDictionary dictionaryWithContentsOfFile:documnetPath];
NSLog(@"%@", documnetPath);
存储结果如下图: