Swift 拷贝文件夹,实现文件夹内容整体复制
我们知道,在沙盒内,iOS要拷贝一个文件,可以使用 fileManager.copyItem(atPath: fullPath,toPath: fulltoPath) 方法简单实现,不过当我们要拷贝的是一个整体文件夹(内部包含自文件夹等等)的话,该如何实现? ? 我自己测试了下,发现依然可以很便捷到实现 比如:我要实现下图的文件夹拷贝,将cssjs文件夹整体拷贝到cssjs_temp内。 ? =====》实现: /// 拷贝文件夹 /// /// - Parameters: /// - fpath: 原始路径,绝对路径 /// - tpath: 目标路径,绝对路径,注意:这里tpath路径必须包含目标文件夹名称,否则拷贝不了 func copyFile(fpath:String,tpath:String) { do{ //如果已存在,先删除,否则拷贝不了 let fileManager = FileManager.default if fileManager.fileExists(atPath: tpath){ try fileManager.removeItem(atPath: tpath) } try fileManager.copyItem(atPath: fpath,toPath: tpath) }catch{} } ? 这里有几个小注意点: 1、目标路径,要带上文件夹名称,而不能只写父路径,比如上文到目标路径必须这样:xxx/html/cssjs_temp/cssjs? ,带上最后的cssjs 2、如果要重命名,只需要将??xxx/html/cssjs_temp/cssjs_newName的最后文件夹名称修改即可(cssjs_newName就是你要的新名称)。 3、如果是覆盖拷贝,就是说目标路径已存在此文件夹,我们必须先删除,否则提示make directory error(当然这里最好做一个容错处理,比如拷贝前先转移到其他路径,如果失败,再拿回来) ? ? 结束~ ? ? 最后引申一下,最初我的需求 ,是将项目的文件,拷贝到沙盒内。 其原理是一样到,只不过项目内文件到路径与沙盒有点区别而已。 获取项目内文件路径: Bundle.main.path(forResource: <#T##String?#>,ofType: <#T##String?#>)
Bundle.main.path(forResource: <#T##String?#>,ofType: <#T##String?#>,inDirectory: <#T##String?#>)
一个是无实体路径,一个有实体路径。 ? 然后依然调用上文到拷贝方法即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |