重命名DocumentDirectory中的文件

时间:2016-02-02 16:05:16

标签: ios swift file-rename

我的dynamic中有一个PDF文件。

我希望用户能够将此PDF文件重命名为其他内容(如果他们选择)。

我将有一个DocumentDirectory来启动此过程。新名称将来自UIButton

我该怎么做?我是Swift的新手,并且只发现了Objective-C信息并且很难转换它。

文件位置的示例是:

  

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

我有这段代码来检查文件是否存在:

UITextField

3 个答案:

答案 0 :(得分:33)

要重命名文件,您可以使用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)
}

答案 1 :(得分:4)

有一种更简单的方法可以在任何给定的NSURL上重命名项目。

url.setResourceValue(newName, forKey: NSURLNameKey)

答案 2 :(得分:3)

现代的方式是(url是沙箱中文件的文件URL):

var rv = URLResourceValues()
rv.name = newname
try? url.setResourceValues(rv)