当第一次启动app的时候,IOS操作系统会为此APP创建一个文件系统,该文件默认会有四个目录:
Documents:存储用户在操作app时产生的数据,在此目录下的数据可以通过iCloud进行同步。
Library:用户偏好设置,通常和此类NSUserDaults 搭配使用,在此目录下的数据可以通过iCloud进行同步。
tmp:存放临时数据,此目录下的数据不会与iCloud 进行同步。
app包:开发者不会操作此目录,通常是通过此NSBundle来获得内资源,如工程的素材。
下面是对以上四个目录的一些操作:
//获取程序的根目录
NSString *rootPath = NSHomeDirectory();
//获取根目录下的某个文件夹
NSArray *array = NSSearchPathForDirectoriesInDomains(**NSDocumentDirectory**,NSUserDomainMask,YES);
//得到一个数组,取出这个数组的第一个元素(一般只有一个元素)
NSString *documentsPath = [array ObjectAtIndex:0];
1.Documents:操作Documents文件夹,并在文件夹下载视频
//创建一个方法create创建相应的文件夹
-(NSString *)createDirInTmp:(NSString *)dirName{
//获取Documents路径
NSString *documentsPath = [documentsPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
//拼接路径,因为上面语句获得的是documents文件夹的路径
NSString *dirDocuments = [documentsPath stringByAppendingPathComponent:dirName];
//创建NSFIleManager(与通知中心NSNotificationCenter类似,为单例类),用于判断是否存在这个文件夹
NSFileManager *file = [NSFileManager defaultManager];
//判断
BOOL isExist = [file fileExistsAtPath:dirDocuments];
//如果不存在,则创建文件夹
if(!isExist)
//创建文件夹
BOOL isSuccess = [file createDirectoryAtPath:dirDocuments withIntermediateDirector:YES attributes:nil error:nil];
}
//通过上述方法创建Video文件夹
NSString *videoPath = [self creatDirInDocuments:@"Video"];
//从网络上下载视频到Video文件夹
if(videoPath != nil){
NSString *videoUrlString = @" ~/xxx.mp4";
//需要截取网络路径“/”后面的内容,与Video路径拼接,得到文件存储路径
NSString *filePath = [videoPath stringByAppendingPathComponent:[videoUrlString lastPathComponent]];
//判断文件是否存在,依旧使用的是单例类:NSFileManager
//......
//将网络文件写入本地的方法
[fileManager createFileAtPath:filePath contents:data attributes:nil];
}
图片、视频都可以解析成二进制数,这也是文件下载到本地的一个远离。其实是对data的操作。