文件的管理
- 沙盒的概念
定义:
1、iOS中每个App应用程序都有一个`单独封闭` 的文件夹。
2、沙盒目录用来存放App的本地文件,例如:音频、视频、图片文件
3、当前App应用陈旭没权限访问其他App的沙盒(更安全)
沙盒路径的获取
- 模拟器上的沙盒目录路径:
~/Library/Application Support/iPhone Simulator/版本/Applications
- 沙盒目录中有如下子目录
1、Documents存放长期使用的文件
2、Library系统存放文件
3、tmp临时文件,App重启时,该目录下的文件清空
//沙盒的主目录
NSString *homePath = NSHomeDirectory();
//2.获取主目录
NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask,BOOL expandTilde)
//获取沙盒下Documents目录
NSString *documents = [homePath stringByAppendingPathComponent:@"Documents"];
//获取沙盒下的Library目录
NSString *library = [homePath stringByAppendingPathComponent:@"Library"];
//获取沙盒下的tmp目录
NSString *library = [homePath stringByAppendingPathComponent:@"tmp"];
- NSString处理路径
//演示路径
NSString *path = @"/User/iOS/file.txt";
//1.获取路径的组成部分 结果:("/","User","iOS","file.txt")
NSArray *components = [path pathComponents];
//2.路径的最后一个组成部分 结果:file.txt
NSString *lastName = [path lastPathComponent];
//3.追加文件或目录 结果:/User/iOS/file.txt/app.txt
NSString *filePath = [path stringByAppendingPathComponent:@"app.txt"];//(不需要加"/")
//4.删除最后部分的组成部分 结果:/User/iOS
NSString *filePath = [path stringByDeletingLastPathComponent];
//5.获取路径最后部分的扩展名 结果:txt
NSString *extName = [path pathExtension];
//6.追加扩展名 结果:/User/iOS/file.txt.jpg
NSString *filePath = [path stringByAppendingPathExtension:@"jpg"];
- NSData
定义: NSData是对数据的一种抽象,任何数据都可以通过NSData来存储,NSMutableData是可变的,继承于NSData。
分类:
- 音频数据
- 图片数据
- 视频数据
- 文本数据
示例
//NSString 转 NSData
NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];
//NSData 转 NSString
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- NSFileManager
定义: NSFileManager主要对文件进行管理
功能:
- 创建文件
- 复制文件
- 删除文件
- 剪切文件
//创建NSFileManager对象
NSFileManager *fileManager = [NSFileManager defaultManager];
//创建:一个文件并写入数据
-(BOOL) createFileAtPath:(NSString *)path contents:(NSData *)data;
//从一个文件中读取数据
-(NSData *)contentsAtPath:(NSString *)path;
//剪切:srcPath路径上的文件移动到dstPath路径上,注意这里的路径是文件路径而不是目录(可以修改文件名)
-(BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **/*双重指针变量*/)error;
//复制:srcPath路径上的文件复制到dstPath路径上
-(BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError *)error;
//文件是否存在
-(BOOL)fileExistsAtPath:(NSString *)path;
//移除文件(删除)
-(BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
//文件属性
-(NSDictionary)attributesOfItemAtPath:(NSString *)path error:(NSSError **)error;
- NSFileHandle