次のようなことができます。ここで、requestedName
はユーザーが選択したファイル名、はextension
ファイルの拡張子、はファイルをbasePath
保存しようとしているフォルダーです。
NSFileManager *fm = [NSFileManager defaultManager];
NSString * filename = requestedName;
if ([fm fileExistsAtPath:[basePath stringByAppendingPathComponent:requestedName]])
{
unsigned int counter = 1;
while ( [fm fileExistsAtPath: [basePath stringByAppendingPathComponent: filename]])
{
//NSLog(@"File already exists %@", filename);
NSURL *originalFilePath = [NSURL URLWithString:[kTempPath stringByAppendingPathComponent:filename]];
filename = [[NSString stringWithFormat: @"%@-%d",
[requestedName stringByDeletingPathExtension], counter]stringByAppendingPathExtension: extension];
counter ++;
NSURL *newFilePath = [NSURL URLWithString:[kTempPath stringByAppendingPathComponent:filename]];
[fm moveItemAtURL:originalFilePath toURL:newFilePath error:nil];
// just in case
if (counter > 512) break;
}
}
ファイルが存在しない場合は、NSFileManagerを使用してmoveItemAtURL
、またはmoveItemAtPath
NSFileManagerからファイルを正しい場所に移動します。