1.iOS沙盒机制
1.1、iOS应用程序只能在为该程序中创建的文件系统中读取文件,不可以去其它目录进行访问,这个区域被称之为沙盒。
1.2、每个APP只能在自己APP的沙盒进行读写文件,不能访问其他APP的沙盒文件。
1.3、iOS模拟器沙盒地址为 资源库/Application Support/iPhone Simulator/**。
2.沙盒目录结构
2.1、沙盒目录初始化有三个目录文件夹,分别是:Documents, Library 和 tmp。
2.2、各个目录的结构和说明:
Documents:iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
tmp:提供一个即时创建临时文件的地方。
iTunes在与iPhone同步时,备份所有的Documents和Library文件。
特别说明:在iPhone在重启的时候,会删除/丢弃所有在tmp文件夹里面的文件。
3.沙盒各个目录访问:
3.1、获取程序的Home目录
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);
3.2、获取document目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentpath = [paths objectAtIndex:0];
NSLog(@"path:%@", documentpath);
3.3、获取Cache目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *Cache = [paths objectAtIndex:0];
NSLog(@"%@", Cache);
3.4、获取Library目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *Librarypath = [paths objectAtIndex:0];
NSLog(@"%@", Librarypath);
3.5、获取Tmp目录
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"%@", tmpDir);
3.6、写入文件
NSArray *array = [[NSArray alloc] initWithObjects:@"写入内容",@"content",nil];
[array writeToFile:filePath atomically:YES];
4.文件管理
4.1、创建文件管理器
NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString * filePath = [documents stringByAppendingPathComponent:@"test"];
// 判断一个文件是否存在,传入全路径
if ([fileManager fileExistsAtPath:filePath]) {
NSLog(@"it is exit");
}
4.2、获取目录列里所有文件名
4.2.1、有两种方法可以获?。簊ubpathsOfDirectoryAtPath 和subpathsAtPath
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManage = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];
NSLog(@"%@",file);
NSArray *files = [fileManage subpathsAtPath: myDirectory ];
NSLog(@"%@",files);