39 votes

Comment renommer un fichier à l'aide de NSFileManager

J'ai un seul fichier nommé a.caf dans le répertoire des documents. Je voudrais le renommer lorsque l'utilisateur tape un UITextField et appuie sur change (le texte entré dans le UITextField doit être le nouveau nom de fichier).

Comment puis-je faire ça ?

84voto

diciu Points 18634

Vous pouvez utiliser 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];

15voto

Michal Points 2337

Pour garder cette question à jour, j'ajoute également la version 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)
}

5voto

victor_luu Points 59

C'est la fonction par daehan park de convertir en Swift 3 :

func moveFile(pre: String, move: String) -> Bool {
    do {
        try FileManager.default.moveItem(atPath: pre, toPath: move)
        return true
    } catch {
        return false
    }
}

1voto

daehan park Points 88

A travaillé sur SWIFT 2,2

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X