2015-12-07 144 views
0

我试图将文档目录中的文件复制到文档目录内的目录,但出现错误无法复制到“文件”,因为具有相同名称的项目已经存在。将文档目录中的文件复制到文档目录中的目录时出错

任何帮助,将不胜感激。

这里是我的代码:

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