所以,这是我的情况:
- 我有一个应用程序提示用户选择一个文件夹来保存他的文件
- 现在假设他的文件是 :
a.png
,b.png
,c.png
我想要的是:
- 如果文件 - 假设 -
a.png
已存在于所选文件夹中,请不要覆盖它。而是创建一个名为a (1).png
. 如果文件a (1).png
已经存在,则将其命名为a (2).png
,依此类推——就像 OS X 在复制粘贴同名文件时所做的那样。
这就是我目前正在做的事情 - 但它仍然没有让我印象深刻:
NSString* target = [self getTargetPathForFile:filename path:folder];
NSString* fname = [target lastPathComponent];
while ([[NSFileManager defaultManager] fileExistsAtPath: [folder stringByAppendingPathComponent:fname]])
{
//NSLog(@"FNAME : %@",fname);
if ([self str:fname containsString:@")." options:nil])
{
NSArray* a = [fname componentsSeparatedByString:@"("];
NSArray* b = [[a objectAtIndex:1] componentsSeparatedByString:@")"];
fname = [NSString stringWithFormat:@"%@(%d)%@",[a objectAtIndex:0],[[b objectAtIndex:0] intValue]+1,[b objectAtIndex:1]];
}
else
{
fname = [NSString stringWithFormat:@"%@ (1).%@",[fname stringByDeletingPathExtension],[fname pathExtension]];
}
//NSLog(@"Setting filename to :: %@",fname);
}
target = [folder stringByAppendingPathComponent:fname];
任何想法如何去做?是否有任何可可友好(或内置)的方法?