Ios 将文档目录中的文件复制到文档目录中的目录时出错
我试图将documents目录中的文件复制到documents目录中的某个目录,但遇到一个错误,无法复制到“documents”,因为已存在同名项。 任何帮助都将不胜感激 这是我的密码:Ios 将文档目录中的文件复制到文档目录中的目录时出错,ios,nsfilemanager,Ios,Nsfilemanager,我试图将documents目录中的文件复制到documents目录中的某个目录,但遇到一个错误,无法复制到“documents”,因为已存在同名项。 任何帮助都将不胜感激 这是我的密码: let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]) let logsPath = documen
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)")
}
做这件事的方法不止一种。 最简单的方法是在复制目标文件之前将其删除:
try! NSFileManager.removeItemAtURL(dstURL)
您可能希望通过实现NSFileManagerDelegate
,在一个地方处理所有文件管理错误:
- 设置
委托给您的类(复制文件的位置)NSFileManager()。将
- 拦截实现某个委托方法时发生的错误。根据错误,您可以执行不同的恢复操作。返回
继续,或返回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)
}
}
做这件事的方法不止一种。 最简单的方法是在复制目标文件之前将其删除:
try! NSFileManager.removeItemAtURL(dstURL)
您可能希望通过实现NSFileManagerDelegate
,在一个地方处理所有文件管理错误:
- 设置
委托给您的类(复制文件的位置)NSFileManager()。将
- 拦截实现某个委托方法时发生的错误。根据错误,您可以执行不同的恢复操作。返回
继续,或返回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)
}
}