IOS文件保存(重名不覆盖解决方案)

/**

 *  保存文件

 *

 *  @param name 文件名

 *  @param theData 文件数

 *

 *  @return 如果有就设置,然后返回yes;如果没有就返回no

 */

+(NSString*)saveFile:(NSString *)name withData:(NSData*)theData

{

    NSFileManager *fm=[NSFileManager defaultManager];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentDirectory = [paths objectAtIndex:0];

    //获取当前登录人员的ID

    NSNumber* userID = [[NSUserDefaults standardUserDefaults] objectForKey:LoginUserID];

    //创建和当前人员相关路径目录

    NSString* userFilePath = [NSString stringWithFormat:@"%@-%@",userID,FILE_DATA];

    //获取路径

    NSString *home = [documentDirectory stringByAppendingPathComponent:userFilePath];

    //判断文件夹是否存在如果不存在就创建

    if (![fm fileExistsAtPath:home]) {

        [fm createDirectoryAtPath:home withIntermediateDirectories:YES attributes:nil error:nil];

    }

    

    NSDictionary *fileDic=[FunctionUnit legalFileNameWithName:name home:home fileManager:fm];

    NSString* file = fileDic[@"file"];//文件路径

    if([theData writeToFile:file atomically:YES]){

        return fileDic[@"name"];//最终文件名

    }else{

        return nil;

    }

}

/**

 *  获取合法文件名

 *

 *  @param name 文件名

 *  @param home 目录

 *  @param fm fileManager

 *

 *  @return 如果有就设置,然后返回yes;如果没有就返回no

 */

+(NSDictionary*)legalFileNameWithName:(NSString*)name

                                 home:(NSString*)home

                          fileManager:(NSFileManager*)fm{

    

    NSString *file=[home stringByAppendingPathComponent:name];

    

    if ([fm fileExistsAtPath:file])

    {

        NSArray* classArray = [name componentsSeparatedByString:@"."];

        NSString* fileClass = [classArray lastObject];

        NSString* fileName =[classArray firstObject];

        

        NSArray* array = [fileName componentsSeparatedByString:@"-"];

        

        fileName = @"";

        if (array.count>1 && [[array lastObject] intValue]>0) {

            for (int i=0; i<array.count-1; i++) {

                if (i>0) {

                    fileName = [fileName stringByAppendingString:[NSString stringWithFormat:@"-%@",[array objectAtIndex:i]]];

                }else{

                    fileName = [array objectAtIndex:0];

                }

            }

            name = [fileName stringByAppendingString:[NSString stringWithFormat:@"-%d.%@",[[array lastObject] intValue]+1,fileClass]];

            

        }else{

            name = [fileName stringByAppendingString:[NSString stringWithFormat:@"%@-1.%@",[array firstObject],fileClass]];

            

        }

        //此处用的递归

        return [FunctionUnit legalFileNameWithName:name home:home fileManager:fm];

    }else{

        return @{@"file":file,@"name":name};

    }

}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值