将文档目录中的文件复制到文档目录中的目录时出错

时间:2015-12-07 09:07:26

标签: ios nsfilemanager

我正在尝试将文档目录中的文件复制到文档目录中的目录,但是我收到错误 无法复制到“文档”,因为已经具有相同名称的项目存在。

任何帮助都将不胜感激。

这是我的代码:

let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0])
        let logsPath = documentsPath.URLByAppendingPathComponent("Logs")


        let fileURL = documentsPath.URLByAppendingPathComponent("Database.db")

        do {
            try       NSFileManager.defaultManager().copyItemAtURL(fileURL, toURL: logsPath)
        } catch  let error1 as NSError{
            RZLog.Error ("Error:  \(error1.localizedDescription)")
        }

1 个答案:

答案 0 :(得分:2)

有多种方法可以做到这一点。 最简单的方法是在复制之前删除目标文件:

try! NSFileManager.removeItemAtURL(dstURL)

您可能希望通过实施NSFileManagerDelegate

在一个地方处理所有文件管理错误
  • NSFileManager().delegate设置为您的班级(您复制文件的位置)
  • 拦截实现其中一个委托方法的错误。根据错误,您可以执行不同的恢复操作。返回true继续或false中止。

示例:

class AnyClass : NSFileManagerDelegate {
    let fileManager = NSFileManager()

    func fileManager(fileManager: NSFileManager, shouldProceedAfterError error: NSError, copyingItemAtURL srcURL: NSURL, toURL dstURL: NSURL) -> Bool {
        if error.code == NSFileWriteFileExistsError {
            try! fileManager.removeItemAtURL(dstURL)
            copyFrom(srcURL, to: dstURL)
            return true
        } else {
            return false
        }
    }

    func copyFrom(a: NSURL, to b: NSURL) {
        try! fileManager.copyItemAtURL(a, toURL: b)
    }

    func entryPoint() {
        fileManager.delegate = self
        copyFrom(sourceURL, to: destinationURL)
    }
}