ios的文件系统(沙盒机制)
当第一次启动app 时,ios操作系统就为此app 创建一个文件系统,该文件系统下,默认有四个目录,分别是:
Documents:存储用户在操作app 时产生的数据,在此目录下的数据可以通过iCloud进行同步
Library:用户偏好设置,通常和 NSUserDefaults 搭配使用,在此目录下的数据可以通过iCloud进行同步
tmp:存放临时数据,在此目录下的数据不会通过iCloud进行同步
app包:开发则不会操作此目录,通常是通过 NSBundle 来获取包内资料,如工程的素材
沙盒机制:
1.每个应用程序都在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容
3.应用程序向外请求或接收数据都需要经过权限认证
对文件系统的一些相关操作:
//获取程序根目录
NSString *rootPath = NSHomeDirectory();
//获取根目录下 Documents 的目录
//在根目录后面拼接 Documents,以此来获得 Documents 的目录
NSString *documentsPath = [rootPath stringByAppendingPathComponent:@"Documents"];
//最常用的获取 Documents 的目录方式
documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES)objectAtIndex:0 ];
如何下载一个视频文件到 Documents 目录下的 Video 文件夹
//首先我们创建一个方法,用来创建 Video 文件夹
- (NSString *)createDirInDocuments:(NSString *)dirName{
//获取 Documents 的文件路径
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) objectAtIndex:0];
//拼接成我们想要的文件的路径的字符串
NSString *dirDocuments = [documentsPath stringByAppendingPathComponent:dirName];
//NSFileManager 单例类,用于文件的操作
NSFileManager *fileManager = [NSFileManager defaultManager];
//判断本地是否存在某个文件/文件夹
BOOL isExist = [fileManager fileExistsAtPath:dirDocuments];
if (!isExist) {
//如果不存在,创建文件夹
NSError *error;
BOOL isSuccess = [fileManager createDirectoryAtPath:dirDocuments
withIntermediateDirectories:YES
attributes:nil