判断文件是否存在
// 沙盒文件路径
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"QQ_V5.4.0.dmg"];
NSLog(@"File downloaded to: %@",path);
// 创建一个空的文件到沙盒中
NSFileManager *manager = [NSFileManager defaultManager];
if(![manager fileExistsAtPath:path]) {
// 如果没有下载文件的话,就创建一个文件。如果有下载文件的话,则不用重新创建(不然会覆盖掉之前的文件)
[manager createFileAtPath:path contents:nil attributes:nil];
//创建文件夹
// [manager createDictionaryAtPath:path .......];
}
// 创建文件句柄 从内存向文件目录中写入数据
self.fileHandle = [NSFileHandle fileHandleForWritingAtPath:path];
从path路径中读取数据到内存
self.fileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
// 指定数据的写入位置 -- 文件内容的最后面
[self.fileHandle seekToEndOfFile];
// 向沙盒写入数据
[self.fileHandle writeData:data];
// 3. 设置HTTP请求头中的Range 断点下载上传最核心的部分
self.currentLength当前已经下载或者上传的文件长度
NSString *range = [NSString stringWithFormat:@"bytes=%ld-", self.currentLength];
[request setValue:range forHTTPHeaderField:@"Range"];
计算文件长度的方法
if([fileManager fileExistsAtPath:path]) {
NSError*error =nil;
NSDictionary*fileDict = [fileManager attributesOfItemAtPath:path error:&error];
if(!error && fileDict) {
fileLength = [fileDict fileSize];
}
}
网友评论