IOS中大文件拷贝算法
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 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。