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


     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 }
  • 相关阅读:
    总结vue中render的使用
    到底什么时候需要用到监听
    vue场景中的小知识点总结
    《驱动学习 —— sysfs文件系统的编写》
    《wsl中安装ubuntu,并修改默认安装盘符》
    (二)SpringCloudAlibabaOpenFeign远程服务调用
    (五)使用docker安装mysql
    (二)linux虚拟机网络设置
    (六)使用docker安装redis
    (一)SpringCloudAlibabaNacos注册中心
  • 原文地址:https://www.cnblogs.com/doublelongliu/p/4649618.html
Copyright © 2020-2023  润新知