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};

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章