/**
* 保存文件
*
* @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};
}
}