だから、ここに私の状況があります:
- ユーザーにファイルを保存するフォルダーを選択するように求めるアプリケーションがあります
- ここで、彼のファイルが次のようになっているとしましょう:
a.png
,b.png
,c.png
私が欲しいのは:
- ファイル
a.png
が選択したフォルダーに既に存在する場合、上書きしないでください。代わりに、 name のファイルを作成します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];
これについてどうすればいいですか?これには、Cocoa に適した (または組み込みの) メソッドはありますか?