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

    }

}

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