1、文件管理器(NSFileManager):管理和操作文件,如创建、移动、删除、复制文件等
2、NSFileHandle 与NSFileManager的区别:
NSFileHandle 此类主要是对文件内容进行读取和写入操作
NSFileManger 此类主要是对文件进行的操作以及文件信息的获取
3、使用NSFileHandle的基本步骤 :创建一个NSFileHandle对象;对打开的文件进行I/O操作;关闭文件;
- (NSData *)availableData; 从设备或通道返回可用的数据
- (NSData *)readDataToEndOfFile; 从当前的节点读取到文件的末尾
- (NSData *)readDataOfLength:(NSUInteger)length; 从当前节点开始读取指定的长度数据
- (void)writeData:(NSData *)data; 写入数据
- (unsigned long long)offsetInFile; 获取当前文件的偏移量
- (void)seekToFileOffset:(unsigned long long)offset; 跳到指定文件的偏移量
- (unsigned long long)seekToEndOfFile; 跳到文件末尾
- (void)truncateFileAtOffset:(unsigned long long)offset; 将文件的长度设为offset字节
- (void)closeFile; 关闭文件
创建一个NSFileHandle对象
NSFileManager *fm = [NSFileManager defaultManager];
创建文件夹
[fm createDirectoryAtPath:withIntermediateDirectories: attributes: error:];
// 第一个参数 createDirectoryAtPath: 创建文件夹路径
// 第二个参数 withIntermediateDirectories: 是否补全路径
// 第三个参数 attributes: 文件属性
// 第四个参数 error: 错误信息
创建文件
[fm createFileAtPath: contents: attributes:];
// 第一个参数 createFileAtPath: 文件路径
// 第二个参数 contents : 内容
// 第三个参数 attributes: 文件属性
删除文件
[fm removeItemAtURL: error:];// 这样删除不会移至垃圾箱
移动文件
[fm moveItemAtPath: toPath: error:];
// 第一个参数 moveItemAtPath:移动文件的路径
// 第二个参数 toPath:移动到哪个路径
// 第三个参数 error: 错误信息
复制文件
[fm copyItemAtPath: toPath: error:];
// 第一个参数 moveItemAtPath:复制文件的路径
// 第二个参数 toPath:复制到哪个路径
// 第三个参数 error: 错误信息
获取沙盒路径(方法一)
NSString *homePath = NSHomeDirectory(); // 沙盒的主目录
NSString *documents = [homePath stringByAppendingPathComponent:@"Documents"]; // 获取沙盒下的 Documents 目录
NSString *library = [homePath stringByAppendingPathComponent:@"Library"];// 获取沙盒下的 Library 目录
NSString *tmp = [homePath stringByAppendingPathComponent:@"tmp"]; // 获取沙盒下的 tmp 目录
获取沙盒路径(方法二)
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // 获取沙盒下的 Documents 目录
NSArray *library = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); // 获取沙盒下的 Library 目录
NSArray *Cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); // 获取沙盒下的 Library 中的 Cache(缓存) 目录
NSString *tmp = NSTemporaryDirectory(); // 获取 tmp 路径