IOS中大文件拷贝算法
时间:2014-05-20 13:09:41
收藏:0
阅读:258
1 + (void)copyFileFromPath:(NSString *)fromPath toPath:(NSString *)toPath 2 { 3 //每次读取数据大小 4 #define READ_SIZE 10 5 // 获取文件管理器 6 NSFileManager *fm = [NSFileManager defaultManager]; 7 8 // 创建目标文件,用于存储从源文件读取的NSData数据 9 10 BOOL isSuccess = [fm createFileAtPath:toPath contents:nil attributes:nil]; 11 12 if (!isSuccess) { 13 NSLog(@"创建目标文件失败!"); 14 return; 15 } 16 // 获取源文件大小 17 NSDictionary *dic = [fm attributesOfItemAtPath:fromPath error:nil]; 18 NSNumber *file_size = [dic objectForKey:@"NSFileSize"]; 19 NSNumber *hadReadSize = @0; 20 double leftSize = [file_size doubleValue] - [hadReadSize doubleValue]; 21 // 创建源文件和目标文件的句柄 22 NSFileHandle *sh = [NSFileHandle fileHandleForReadingAtPath:fromPath]; 23 NSFileHandle *dh = [NSFileHandle fileHandleForWritingAtPath:toPath]; 24 NSData *tempData = nil; 25 while (leftSize > 0) { 26 if (leftSize < READ_SIZE) { 27 tempData = [sh readDataToEndOfFile]; 28 [dh writeData:tempData]; 29 break; 30 } 31 else 32 { 33 tempData = [sh readDataOfLength:READ_SIZE]; 34 [dh writeData:tempData]; 35 leftSize -= READ_SIZE; 36 } 37 38 } 39 40 }
评论(0)