Подтвердить что ты не робот

Переименовать файл в DocumentDirectory

У меня есть файл PDF в моем DocumentDirectory.

Я хочу, чтобы пользователь мог переименовать этот PDF файл в другое место, если захочет.

У меня будет UIButton, чтобы начать этот процесс. Новое имя будет получено от UITextField.

Как мне это сделать? Я новичок в Swift и нашел только Objective-C информацию об этом, и мне трудно преобразовать его.

Пример расположения файла:

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

У меня есть этот код, чтобы проверить, существует ли файл или нет:

        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")

        }
4b9b3361

Ответ 1

Чтобы переименовать файл, вы можете использовать NSFileManager moveItemAtURL.

Перемещение файла с moveItemAtURL в том же месте, но с двумя разными именами файлов - это та же операция, что и "переименование".

Простой пример:

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 3

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)
}

Ответ 2

Существует более простой способ переименовать элемент в любом заданном NSURL.

url.setResourceValue(newName, forKey: NSURLNameKey)