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