前几天有人问起iOS沙盒路径如何获取,时间太久没记起来,几天有空,回顾一下:
沙盒 : 其实对于每一个应用程序都有唯一的一个本地文件与之对应 名字由系统随机生成这个文件就是沙盒
沙盒机制 :沙河机制 其实就是对每一个应用程序 的资源起到一个保护作用当前 程序不允许访问其他程序的资源 其他程序也不允许 访问当前程序的的资源
对于每一个应用程序的沙盒文件都包含以下文件
1.documents 用来存储持久化数据文件 .如果我们想对一个文件进行长久存储就放在该文件夹下
2.Libary
(a)Caches : 缓存文件,存放已经下载完成的视频音频 图片等一般我们会在该文件下 创建Images Audioes Videoes等文件 分别存放图片视频音频
(b)Perfrences : 用于存放用户的偏好设置比如 用于判断程序是否是第一次启动的plist文件就放在该文件夹下的
3.temp : 存放未下载完成的视频音频等 一般我们会将下载完成的视频音频在手动移动到Caches中
XXX.app :应用程序包 ,应用程序资源都来源于包,而包也是我们上传到appStore 以及用户从AppStore下载的文件对于包内的资源我们不能进行修改 更不能删除
另外,对于以上文件都是由系统创建 不允许随意更改我们只能删改自己创建的文件;
代码如下
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *applicationPath = [[NSBundle mainBundle] resourcePath];
进而了解一下文件的简单存储:
写入一段字符串:helloWorld!
NSString *str1 = @"helloWorld";
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"test.TXT"];
[str1 writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
保存数组做plist文件
NSString *str2 = str1;
//创建一个数组
NSArray *arr = @[str1,str2];
//拼接文件路径
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"arr.plist"];
//写入
[arr writeToFile:filePath atomically:YES];
保存字典为xml
NSDictionary *dic = @{@"t1":str1 ,@"t2":str2};
//文件拼接
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"dic.xml"];
[dic writeToFile:filePath atomically:YES];
保存data
NSData *data = [str1 dataUsingEncoding:NSUTF8StringEncoding];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"data.data"];
[data writeToFile:filePath atomically:YES];
本地文件读取(txt文件为例)
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"f1" ofType:@".txt"];
NSString *str = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];