• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我们知道,在沙盒内,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?#>)

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

 

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
窥探Swift系列博客说明及其Swift版本间更新发布时间:2022-07-13
下一篇:
swiftlabel不同颜色、不同字体发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap