2010-08-17 2 views
36

У меня есть один файл с именем a.caf в каталоге документов. Я хотел бы переименовать его, когда пользователь вводит в UITextField и нажимает на изменение (текст, введенный в UITextField, должен быть новым именем файла).Как переименовать файл с помощью NSFileManager

Как я могу это сделать?

+1

Этот вопрос будет отвечать вашим: http://stackoverflow.com/questions/873522/rename-file-in-cocoa –

ответ

82

Вы можете использовать moveItemAtPath.

NSError * err = NULL; 
NSFileManager * fm = [[NSFileManager alloc] init]; 
BOOL result = [fm moveItemAtPath:@"/tmp/test.tt" toPath:@"/tmp/dstpath.tt" error:&err]; 
if(!result) 
    NSLog(@"Error: %@", err); 
[fm release]; 
13

Чтобы сохранить этот вопрос уточненный, я добавляю в Swift версии, а также:

let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 
let originPath = documentDirectory.stringByAppendingPathComponent("/tmp/a.caf") 
let destinationPath = documentDirectory.stringByAppendingPathComponent("/tmp/xyz.caf") 

var moveError: NSError? 
if !manager.moveItemAtPath(originPath, toPath: destinationPath, error: &moveError) { 
    println(moveError!.localizedDescription) 
} 
+0

это не работает в быстрой 3,0 –

+0

я не сохранил его до-to Дата. Спасибо за головы, я обновлю ответ. – Michal

+2

Вам не хватает 'let manager = NSFileManager()' – boidkan

0

Работал на Swift 2,2

func moveFile(pre: String, move: String) -> Bool { 
    do { 
     try NSFileManager.defaultManager().moveItemAtPath(pre, toPath: move) 
     return true 
    } catch { 
     return false 
    } 
} 
2

Это функция daehan park для преобразования в Swift 3:

func moveFile(pre: String, move: String) -> Bool { 
    do { 
     try FileManager.default.moveItem(atPath: pre, toPath: move) 
     return true 
    } catch { 
     return false 
    } 
} 
Смежные вопросы