首页 > 解决方案 > iOS/Swift 4:如何在不删除现有目标的文件和文件夹的情况下复制包含多个文件夹的文件夹?

问题描述

我想复制一个包含多个文件夹的文件夹,而这个文件夹包含多个文件。如果此文件夹存在,我想将它们保留在里面,如果存在则覆盖文件。如果文件不存在,它们只是自然地添加。

_ = try FileManager.default.replaceItemAt(previousItemUrl, withItemAt: currentItemUrl)

例如:

设备上存在的文件:

APP/XXX/a.txt
APP/XXX/b.txt
APP/XXX/c.txt
APP/YYY/d.txt
APP/ZZZ/e.txt
APP/ZZZ/f.txt

要复制的文件:

APP/XXX/c.txt //Will override
APP/YYY/g.txt //new file added
APP/ZZZ/h.txt //new file added
APP/AAA       //new folder added

我是否必须为自己创建一个递归函数,或者该函数本身是否已经存在?

提前致谢。

标签: iosswiftfilensfilemanager

解决方案


我们可以使用下面的原生方法。它将源复制到目标。

func copyItem(atPath srcPath: String, 
   toPath dstPath: String) throws

我们还可以通过实现下面提到的其他委托方法来控制覆盖用例。

optional func fileManager(_ fileManager: FileManager, 
         shouldCopyItemAt srcURL: URL, 
                       to dstURL: URL) -> Bool

您可以在Apple 文档中找到所有这些详细信息


推荐阅读