文件对接器侧重于对文件内容的管理,可以使用它完成文件的继续写入,部分读取功能,使用之前必须保证文件是存在的
//拿到Caches文件夹路径
NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
//拼接路径
NSString *filepath =[cachesPath stringByAppendingPathComponent:@"handle.txt"];
//创建文件
NSFileManager *fileManager = [NSFileManager defaultManager];
//当文件不存在的时候
if (![fileManager fileExistsAtPath:filepath]) {
//创建文本内容
NSString *content = @"123";
BOOL result = [fileManager createFileAtPath:filepath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
if (result) {
NSLog(@"创建成功");
NSLog(@"%@",filepath);
//创建对接器
NSFileHandle *writeHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
//移动光标到最后位置
[writeHandle seekToEndOfFile];
//写入数据
NSString *writString = @"456";
[writeHandle writeData:[writString dataUsingEncoding:NSUTF8StringEncoding]];
//关闭对接器对应文件
[writeHandle closeFile];
}else{
NSLog(@"创建失败");
}
}else{
NSLog(@"文件已经存在");
//创建对接器
NSFileHandle *writHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
[writHandle seekToEndOfFile];
NSString *writString = @"456";
[writHandle writeData:[writString dataUsingEncoding:NSUTF8StringEncoding]];
[writHandle closeFile];
}
//文件的部分读取
NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filepath];
//读取长度为1的字符串
// NSData *data = [readHandle readDataOfLength:1];
//获取总长度
NSInteger length = [readHandle availableData].length;
NSLog(@"%ld",length);
/**
* 移动光标到一半的位置
*
* 当你需要获取全部的内容,需要手动设置seekToFileOffset:0
*/
[readHandle seekToFileOffset:length/2];
//读取数据 直接冲光标所在处读到最后
NSData *readData = [readHandle readDataToEndOfFile];
//将Data转换成String
NSString *read = [[NSString alloc]initWithData:readData encoding:NSUTF8StringEncoding];
NSLog(@"%@",read);
//关闭文件对接器所对应的文件
[readHandle closeFile];
打印结果
屏幕快照 2016-06-27 下午5.58.17.png