顾名思义就是苹果的文件处理,用来管理文件的,接下来用一个代码显示用处
- (void)viewDidLoad {
[super viewDidLoad];
//开启代理 开始下载文件
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_15.mp4"];
[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
}
#pragma mark - <NSURLConnectionDataDelegate>
/**
* 接收到响应的时候:创建一个空的文件
*/
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response
{
// 获得文件的总长度
self.contentLength = [response.allHeaderFields[@"Content-Length"] integerValue];
// 创建一个空的文件
[[NSFileManager defaultManager] createFileAtPath:XMGFile contents:nil attributes:nil];
// 创建文件句柄 XMGFile文件存储的路径
self.handle = [NSFileHandle fileHandleForWritingAtPath:XMGFile];
}
/**
* 接收到具体数据:马上把数据写入一开始创建好的文件
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// 指定数据的写入位置 -- 文件内容的最后面
[self.handle seekToEndOfFile];
// 写入数据
[self.handle writeData:data];
// 拼接总长度
self.currentLength += data.length;
// 进度
self.progressView.progress = 1.0 * self.currentLength / self.contentLength;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//这里有点问题 不知道为何 文件明明存在 用fileHandle去读不出数据,郁闷
// NSData *data =[self.handle readDataToEndOfFile];
NSLog(@"%@ %@",@([self.handle seekToEndOfFile]),self.handle.availableData);
//换一个方式 读取文件ok的
NSData *data =[NSData dataWithContentsOfFile:XMGFile];
// 关闭handle
[self.handle closeFile];
self.handle = nil;
// 清空长度
self.currentLength = 0;
}
以上就是fileHanle的一个作用 相信只要知道这个,其他的也能举一反三了。