大文件复制时进行实时保存

 1 int main(int argc, const char * argv[]) {
 2     @autoreleasepool {
 3         
 4         
 5         //复制文件
 6         
 7         
 8         //找到原来的文件路径
 9         NSString *soureFilePath = @"/Users/scjy/Downloads/51CTO下载-10大iOS开发者最喜爱的类库.doc";
10         
11         //指定新的文件路径(文件不存在)
12         NSString *objectFilePath = @"/Users/scjy/Desktop/刘二龙练习/OC/练习1/大文件复制/大文件复制/51CTO下载-10大iOS开发者最喜爱的类库.doc";
13         
14         //创建文件管理器,为创建新的文件做准备
15         NSFileManager *fileManager=[NSFileManager defaultManager];
16         
17         // 如果源文件不存在,结束程序
18         if ([fileManager fileExistsAtPath:soureFilePath]) {
19             return 0;
20         }
21 /*        // 如果目标文件存在,无需创建
22         if ([fileManager fileExistsAtPath:objectFilePath]) {
23             NSLog(@"文件已存在,无需创建新文件");
24         }
25  */
26         //创建新的文件(此时文件中无数据)
27         BOOL isSuccess=[fileManager createFileAtPath:objectFilePath contents:nil attributes:nil];
28         if (isSuccess)
29         {
30             NSLog(@"创建成功");
31             
32             
33             //1.读取源文件中的数据:fileHandleForReadingAtPath
34             NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath];
35             // 用soureHandle.seekToEndOfFile获取文件字节数
36             for (NSUInteger i = 0; i<soureHandle.seekToEndOfFile; i++)
37             {
38                 //准备读取源文件
39                 NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath];
40                 
41                 // 定位从什么位置开始读取源文件
42                 [soureHandle seekToFileOffset:10*i];
43                 
44                 // 读取10字节
45                 NSData *old_data=[soureHandle readDataOfLength:10];
46                 
47                 //2.将源文件中获取的数据写入新的文件:fileHandleForWritingAtPath
48                 //准备写入目标文件
49                 NSFileHandle *objectHandle=[NSFileHandle fileHandleForWritingAtPath:objectFilePath];
50                 
51                 // 开始写入时的位置
52                 [objectHandle seekToFileOffset:10*i];
53                 
54                 // 写入
55                 [objectHandle writeData:old_data];
56                 
57                 // 关闭源文件
58                 [soureHandle closeFile];
59                 
60                 // 关闭目标文件
61                 [objectHandle closeFile];
62             }
63         }
64         else
65         {
66             NSLog(@"创建失败");
67         }
68         
69         
70     }
71     return 0;
72 }
原文地址:https://www.cnblogs.com/doublelongliu/p/4649618.html