Swift 拷贝文件夹,实现文件夹内容总体复制

咱们知道,在沙盒内,iOS要拷贝一个文件,可使用css

fileManager.copyItem(atPath: fullPath, toPath: fulltoPath)

方法简单实现,不过当咱们要拷贝的是一个总体文件夹(内部包含自文件夹等等)的话,该如何实现?html

 

我本身测试了下,发现依然能够很便捷到实现测试

好比:我要实现下图的文件夹拷贝,将cssjs文件夹总体拷贝到cssjs_temp内。spa

 =====》code

实现:htm

 /// 拷贝文件夹
    ///
    /// - 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{}
        
    }

 

这里有几个小注意点:blog

一、目标路径,要带上文件夹名称,而不能只写父路径,好比上文到目标路径必须这样:xxx/html/cssjs_temp/cssjs  ,带上最后的cssjsrem

二、若是要重命名,只须要将  xxx/html/cssjs_temp/cssjs_newName的最后文件夹名称修改便可(cssjs_newName就是你要的新名称)。class

三、若是是覆盖拷贝,就是说目标路径已存在此文件夹,咱们必须先删除,不然提示make directory error(固然这里最好作一个容错处理,好比拷贝前先转移到其余路径,若是失败,再拿回来)原理

 

 

结束~

 

 

最后引伸一下,最初个人需求 ,是将项目的文件,拷贝到沙盒内。

其原理是同样到,只不过项目内文件到路径与沙盒有点区别而已。

获取项目内文件路径:

  Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>)
  Bundle.main.path(forResource: <#T##String?#>, ofType: <#T##String?#>, inDirectory: <#T##String?#>)

一个是无实体路径,一个有实体路径。

 

而后依然调用上文到拷贝方法便可。

相关文章
相关标签/搜索