本地存储,文件内容的拼接
需求:项目中要求将大量数据存储到文件中,但是存储的内容不多追加,这就要求记录上一次存储的位置。
思路:用NSFileHandle来处理
知识点:NSFileHandle文件对接器或成文件句柄
常用的API:
+ (id)fileHandleForReadingAtPath:(NSString *)path; 根据路径读取数据
(id)fileHandleForWritingAtPath:(NSString *)path; 根据路径写数据
- (NSData *)readDataToEndOfFile; 读取数据到最后
- (NSData *)readDataOfLength:(NSUInteger)length; 读取长度
- (void)writeData:(NSData *)data; 写数据
- (unsigned long long)seekToEndOfFile; 将文件指针移至最后,并返回文件长度
- (void)seekToFileOffset:(unsigned long long)offset; 指定文件指针位置
- (void)closeFile; 关闭文件,一般写完/读完数据要关闭文件
我使用的方法
NSString * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *allPath = [path stringByAppendingPathComponent:@“heartTest.txt"];
NSData *ff=[NSKeyedArchiver archivedDataWithRootObject:arr];
NSLog(@“%@",ff);
NSFileHandle *outfile;
outfile=[NSFileHandle fileHandleForWritingAtPath:allPath];
if (outfile==nil) {
NSLog(@"文件打开失败");
}else{
[outfile seekToEndOfFile];
[outfile writeData:ff];
[outfile closeFile];
NSLog(@"写文件成功");
NSData *add=[NSData dataWithContentsOfFile:allPath];
NSLog(@"文件读取成功: %@“,add);
}
}