沙盒机制
每个沙盒含有3个文件夹:Documents, Library, 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件。
Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。
Library:存储程序的默认设置或其它状态信息。
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。
tmp:提供一个即时创建临时文件的地方。
获取Documents目录
- (void)viewDidLoad { [super viewDidLoad]; //方法1)直接获取Documents文件夹路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSLog(@"%@", paths); //方法2)直接获取Documents文件夹路径 NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSLog(@"%@", documentsDirectory); //方法3)拼接字符串获取Documents文件夹路径 NSArray *pathsTwo = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [pathsTwo objectAtIndex:0]; NSLog(@"%@", docDir); }
获取沙盒文件
- (void)viewDidLoad { [super viewDidLoad]; //获取家目录路径的函数 NSString *homeDir = NSHomeDirectory(); //获取Documents目录路径的方法 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [paths objectAtIndex:0]; //获取Caches目录路径的方法 NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachesDir = [paths1 objectAtIndex:0]; //获取tmp目录路径的方法 NSString *tmpDir = NSTemporaryDirectory(); }
创建文件夹
- (void)viewDidLoad { [super viewDidLoad]; //方法)创建文件夹 //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名) NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()]; //在Documents文件夹下面创建一个文件夹 //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil]; //在桌面上command+shift+G,输入一下路径,验证有没有创建成功 NSLog(@"%@", New); }
在创建文件夹内,创建一个文件
- (void)viewDidLoad { [super viewDidLoad]; //方法)创建文件夹 //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名) NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()]; //在Documents文件夹下面创建一个文件夹 //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil]; //在桌面上command+shift+G,输入一下路径,验证有没有创建成功 NSLog(@"%@", New); //方法)在新建的New文件夹下新建一个文件 //先在新建的New文件夹路径下面,添加一个/123.mp3(要创建的文件名及格式)的路径 NSString *NewOne = [NSString stringWithFormat:@"%@/123.mp3",New]; //在包含123.mp3路径下,开始创建文件 [[NSFileManager defaultManager]createFileAtPath:NewOne contents:nil attributes:nil]; }
移除文件
- (void)viewDidLoad { [super viewDidLoad]; //方法)创建文件夹 //先找出APP的路径,然后在后面加一个/newWwrd(要创建的文件夹名) NSString *New = [NSString stringWithFormat:@"%@/Documents/newWord",NSHomeDirectory()]; //在Documents文件夹下面创建一个文件夹 //withIntermediateDirectories设置为YES,这样就能建立多级目录了。如果是一级目录,可以设置为NO BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil]; //在桌面上command+shift+G,输入一下路径,验证有没有创建成功 NSLog(@"%@", New); //方法)在新建的New文件夹下新建一个文件 //先在新建的New文件夹路径下面,添加一个/123.mp3(要创建的文件名及格式)的路径 NSString *NewOne = [NSString stringWithFormat:@"%@/123.mp3",New]; //在包含123.mp3路径下,开始创建文件 [[NSFileManager defaultManager]createFileAtPath:NewOne contents:nil attributes:nil]; //方法)删除文件 //先通过路径找到文件,再删除(已经删除123.mp3) [[NSFileManager defaultManager]removeItemAtPath:NewOne error:nil]; }
读取bundle文件
- (void)viewDidLoad { [super viewDidLoad]; //读取bundle文件 //方法1)按照文件路径读取 NSString *pathBundle = [[NSBundle mainBundle]pathForResource:@"登鹳雀楼" ofType:@"txt"]; NSString *outPathBundle = [NSString stringWithContentsOfFile:pathBundle encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@", outPathBundle); //方法2)按照URL方法读取 NSURL *pathUrl = [[NSBundle mainBundle]URLForResource:@"登鹳雀楼" withExtension:@"txt" subdirectory:nil localization:nil]; NSString *outPathUrl = [NSString stringWithContentsOfURL:pathUrl encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@", outPathUrl); }
Data存取
- (void)viewDidLoad { [super viewDidLoad]; //先创建一个文件夹 NSString *New = [NSString stringWithFormat:@"%@/Documents/NewWord",NSHomeDirectory()]; BOOL yesOrNo = [[NSFileManager defaultManager]createDirectoryAtPath:New withIntermediateDirectories:YES attributes:nil error:nil]; //在文件夹下面创建一个文件 NSString *filePath = [NSString stringWithFormat:@"%@/123.mp3", New]; [[NSFileManager defaultManager]createFileAtPath:filePath contents:nil attributes:nil ]; //Data读取数据 NSString *mp3String = [[NSBundle mainBundle]pathForResource:@"追风少年" ofType:@"mp3"]; NSData *data = [[NSData alloc]initWithContentsOfFile:mp3String]; //将Data写入沙盒文件 [data writeToFile:filePath atomically:YES]; //打印路径,检查有没有创建好 NSLog(@"%@", New); }