保存文件时,解决内存暴涨 方法之-- FileHandle
一、 FileHandle
NSFileHandle 是专门用来处理文件操作的类,那么他都有什么功能呢!
NSFileManager : 主要是做文件的删除,移动,复制,检查文件是否存在等操作,类似于 Finder。
NSFileHandle : 文件句柄(指针),操纵,提示:凡是看到 Handle 这个单词,就表示对前面一个单词(File)的独立操作。
为了解决刚才内存暴涨的那个问题!我们不能在整个数据下载完毕之后才将数据保存的沙盒中,我们应该下载一点就保存一点!
步骤:
1>我们在接受数据的方法中,来写保存数据的方法。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
//调用保存数据的方法
[self saveFile:data];
}
2>写入数据的时候先找到文件的路径
- (void)saveFile:(NSData *)data {
/保存文件的路径
NSString *filePath = @"/Users/Apple/Desktop/111111.hm";
//如果文件不存在,返回的是nil
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
if (fileHandle == nil) {
//如果文件不存在,会自动创建
[data writeToFile:filePath atomically:YES];
}else {
//让offset指向文件的末尾
[fileHandle seekToEndOfFile];
[fileHandle writeData:data];
//关闭文件
[fileHandle closeFile];
}
}
注意点:
:
NSFileHandle 使用完毕之后需要关闭!
浙公网安备 33010602011771号