filemanager简单应用

本文介绍了一种处理视频文件在网络下载过程中遇到的问题的方法,即通过将视频文件下载到本地,然后进行移动和重命名操作来解决无法边缓存边播放的问题。文章详细解释了如何使用NSFileManager检查和创建用户特定的文件夹,以及如何移动文件并更改其名称和后缀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FileManager

一个好久没碰的点,正巧赶上一个第三方服务的坑:

视频文件的网络地址是直接的下载链接,无法边缓存边播,只好用其服务下载到本地之后,找到其路径进行移动以及重命名。
既然移动了位置并且进行了重命名,那么,就破坏了原本封装好的缓存机制,需要自己判断是否已经存在于本地(未下载?被清理了缓存?)等等。

思路如下:
下载前查看自己移动后的路径下是否存在该文件,若无则进行下载。
下载完成后,判断是否有该用户对应的文件夹(每账号一个文件夹,简单的防重),若无则创建,确保有该文件夹之后进行remove。

moveItemAtPath 会把当前路径下文件移动到指定位置,并修改文件名和后缀为新地址指定的文件名和后缀。

当然,修改后缀的操作切记要保证不损坏源文件。

+ (NSString *)getRCVideoFileDirectory{
    NSString *defaultDocuments = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@/", [NSString userId]];
    NSFileManager *fm = [NSFileManager defaultManager];
    BOOL isDir;
    BOOL isHave = [fm fileExistsAtPath:defaultDocuments isDirectory:&isDir];
        
    if (isDir && isHave) {
        return defaultDocuments;
    }else{
        BOOL b_s = [fm createDirectoryAtPath:defaultDocuments withIntermediateDirectories:YES attributes:nil error:nil];
        if (b_s) {
            return defaultDocuments;
        }
    }
    return @"";
}

+ (NSString *)getDownloadVideoFilePathWith:(long)msgId videoName:(NSString *)videoName{
    NSString *videoPath = [NSString stringWithFormat:@"%@%ld_%@",[YTRCFileManager getRCVideoFileDirectory], msgId, videoName];
    return [[NSFileManager defaultManager] fileExistsAtPath:videoPath] ? videoPath : @"";
}

+ (NSString *)renameRCSightMessageWithVideoName:(NSString *)videoName withMessageId:(long)msgId withDownloadVideoPath:(NSString *)d_vp{
    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *newRCVideoPath = [NSString stringWithFormat:@"%@%ld_%@",[YTRCFileManager getRCVideoFileDirectory], msgId, videoName];
    
    if ([fm fileExistsAtPath:d_vp]) {
        NSError *err = nil;
        BOOL b_success = [fm moveItemAtPath:d_vp toPath:newRCVideoPath error:&err];
        if (b_success) {
            return newRCVideoPath;
        }else{
            LYLog(@"追加后缀时出错%@",err.localizedDescription);
        }
    }else{
        LYLog(@"文件不纯在\n");
    }
    
    return @"";
}

最后:
再简单的东西久了不用也会生疏乃至忘记,权当做笔记与回顾吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值