一、iOS沙盒机制
沙盒是系统单独开辟的存储区域,用来保存非代码文件。所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。
1.1、每个应用程序都有自己的存储空间
1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
Documents: 保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如游戏应用可将游戏存档保存在该目录.
temp: 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时,系统也可能会清除该目录下的文件.
iTunes同步设备时不会备份该目录.
Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录.一般存储体积大,不需要备份的非重要数据.
Library/Preference:保存应用的所有偏好设置,iOS的setting(设置)应用会在该目录中查找应用的设置信息.iTunes同步设备时会备份该目录
二、代码实现
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = NSHomeDirectory();//获取沙盒路径--找到沙盒存储空间
NSLog(@"--%@",path);
//找到沙盒路径--1, 2
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//通过search找到沙盒的路径集合
NSLog(@"==>%@",paths);
NSString *dPath = [path stringByAppendingPathComponent:@"tmp"];//通过字符串的路径拼接方法,找到沙盒路径--(沙盒有3个路径,通过三个路径的字符串,可以找到这三个路径)
NSLog(@"dPath:%@",dPath);
//取出documents路径
NSString *documentPath = [paths firstObject];
NSLog( @"------%@",documentPath);
NSString *str = @"姑娘你好";
NSString *txtPath = [path stringByAppendingPathComponent:@"1.txt"];
[str writeToFile:txtPath atomically:YES encoding:NSUTF8StringEncoding error:nil];//将字符串写入1.txt,如果没有此文件,系统会先创建,再写入,如果已经存在,则覆盖原有的文件
// //将图片写入沙盒,首先需要将图片转换成data
// UIImage *image = [UIImage imageNamed:@"1.jpg"];
// NSData *data = UIImageJPEGRepresentation(image, 1);
// [data writeToFile:[dPath stringByAppendingString:@"/1.jpg"] atomically:YES];//如果使用stringByAppendingString拼接路径,则需要在文件前加
}