iOS文件的剪切

作者: 船长_ | 来源:发表于2016-01-06 00:18 被阅读611次

    步骤:

    • 1.获取需要剪切文件(夹)的路径from,和要剪切到哪里的路径to
    • 2.获取文件管理者对象(单例)
    • 3.利用文件管理者对象获取数组
    • 4.遍历数组,拼接文件,利用文件管理者剪切文件

    方法一:

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
    
        NSString *from = @"/Users/chuanzhang/Desktop/from";
        NSString *to = @"/Users/chuanzhang/Desktop/to";
    
        // 单例对象
        NSFileManager *manager = [NSFileManager defaultManager];
        NSArray *subPathA = [manager subpathsAtPath:from]; // 文件夹内所有的文件名称
        NSLog(@"%@",subPathA);
    
        for (int i = 0; i<subPathA.count; i++) {
            // 拼接路径
            NSString *fileName = subPathA[i];
            NSString *fullPath = [from stringByAppendingPathComponent:fileName]; // 这个方法会自动加斜杠
    
            NSString *toPath = [to stringByAppendingPathComponent:fileName];
            NSLog(@"%@",toPath);
    
            [manager moveItemAtPath:fullPath toPath:toPath error:nil];
        }
    
    }
    

    方法二:文件剪切属于耗时操作,应该放在子线程中进行

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
    
        NSString *from = @"/Users/chuanzhang/Desktop/from";
        NSString *to = @"/Users/chuanzhang/Desktop/to";
    
        NSFileManager *manager = [NSFileManager defaultManager];
        NSArray *subPathA = [manager subpathsAtPath:from]; // 文件夹内所有的文件名称
       // NSLog(@"%@",subPathA);
        NSInteger count = [subPathA count];
    
       // dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    
      //  GCD迭代,遍历数组
       dispatch_queue_t queue = dispatch_queue_create("com.chuanzhang", DISPATCH_QUEUE_CONCURRENT);
            dispatch_apply(count, queue, ^(size_t i) {
    
                // 拼接路径
                NSString *fileName = subPathA[i];
                NSString *fullPath = [from stringByAppendingPathComponent:fileName]; // 这个方法会自动加斜杠
    
                NSString *toPath = [to stringByAppendingPathComponent:fileName];
               // NSLog(@"%@",toPath);
                [manager moveItemAtPath:fullPath toPath:toPath error:nil];
    
                NSLog(@"%@--",[NSThread currentThread]);
            });
    }
    
    文件剪切.png
    • 注意:如图,GCD迭代会开启子线程,但是也会在主线程中执行

    相关文章

      网友评论

      • 花前月下:这个功能确实比较少用到。 但是get 一下 也不多。:smile:
        对酒当歌的夜:@花前月下 @叶舞清风多线程离线下载会用到,分割成多块同步下载,完成后在拼接回去
      • FengxinLi:请问一下楼主 这个就是 从@"/Users/chuanzhang/Desktop/from";里面的文件剪切到@"/Users/chuanzhang/Desktop/to" 里面?原来的不在了?
        FengxinLi:@船长_ 谢谢分享
        船长_:@Fengxinliju 对,from里面所有文件都会剪切到to文件夹里面
      • Shumin_Wu:支持
      • 叶舞清风:那个CGD?
        船长_:@叶舞清风 很少用,比如做文件迁移,下载好某个文件,可以保存在其他地方
        叶舞清风:@船长_ 😜😜😜,文件剪切有什么用吗?
        船长_:@叶舞清风 已改正,谢谢提示

      本文标题:iOS文件的剪切

      本文链接:https://www.haomeiwen.com/subject/gysghttx.html