web-dev-qa-db-fra.com

Renommer un fichier dans DocumentDirectory

J'ai un fichier PDF dans mon DocumentDirectory.

Je veux que l'utilisateur puisse renommer ce fichier PDF en quelque chose d'autre s'il le souhaite).

J'aurai un UIButton pour démarrer ce processus. Le nouveau nom proviendra d'un UITextField.

Comment puis-je faire cela? Je suis nouveau à Swift et je n'ai trouvé que des informations sur Objective-C à ce sujet et j'ai du mal à les convertir.

Un exemple de l'emplacement du fichier est:

/var/mobile/Containers/Data/Application/39E030E3-6DA1-45FF-BF93-6068B3BDCE89/Documents/Restaurant.pdf

J'ai ce code pour voir si le fichier existe ou non:

        var name = selectedItem.adjustedName

        // Search path for file name specified and assign to variable
        let getPDFPath = paths.stringByAppendingPathComponent("\(name).pdf")

        let checkValidation = NSFileManager.defaultManager()

        // If it exists, delete it, otherwise print error to log
        if (checkValidation.fileExistsAtPath(getPDFPath)) {

            print("FILE AVAILABLE: \(name).pdf")

        } else {

            print("FILE NOT AVAILABLE: \(name).pdf")

        }
22
ChallengerGuy

Pour renommer un fichier, vous pouvez utiliser moveItemAtURL de NSFileManager.

Déplacer le fichier avec moveItemAtURL au même emplacement mais avec deux noms de fichiers différents est la même opération que "renommer".

Exemple simple:

Swift 2

do {
    let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    let documentDirectory = NSURL(fileURLWithPath: path)
    let originPath = documentDirectory.URLByAppendingPathComponent("currentname.pdf")
    let destinationPath = documentDirectory.URLByAppendingPathComponent("newname.pdf")
    try NSFileManager.defaultManager().moveItemAtURL(originPath, toURL: destinationPath)
} catch let error as NSError {
    print(error)
}

Swift

do {
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    let documentDirectory = URL(fileURLWithPath: path)
    let originPath = documentDirectory.appendingPathComponent("currentname.pdf")
    let destinationPath = documentDirectory.appendingPathComponent("newname.pdf")
    try FileManager.default.moveItem(at: originPath, to: destinationPath)
} catch {
    print(error)
}
37
ayaio

Il existe un moyen plus simple de renommer un élément sur une NSURL donnée.

url.setResourceValue(newName, forKey: NSURLNameKey)
4
Chintan Ghate